• [置顶] 【hibernate进阶】hibernate基本映射


            对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,本质上就是将数据从一种形式转换到另外一种形式。hibernate作为一个ORM框架的代表,在实现ORM中,就是靠hibernate的基本映射来实现的。


    常用的hibernate的几种映射:基本映射和关系映射。这篇博客主要介绍hibernate的基本映射。

    Hibernate在实现ORM功能的时候主要用到的文件有:
        1、 映射类(*.Java):它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。
      
        2、映射文件(*.hbm.xml):它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
     
        3、 hibernate核心配置文件(*.properties/*.cfg.xml):它指定hibernate的一些核心配置,包含与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。映射文件的地址信息也放在这里。


    基本映射:


    java类映射成表:


    <strong><span style="font-size:18px;">package com.bjpowernode.hibernate;
    
    
    import java.util.Date;
    
    public class User {
    
    	private String id;
    	
    	private String name;
    	
    	private String password;
    	
    	private Date createTime;
    	
    	private Date expireTime;
    
    	public String getId() {
    		return id;
    	}
    
    	public void setId(String id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getPassword() {
    		return password;
    	}
    
    	public void setPassword(String password) {
    		this.password = password;
    	}
    
    	public Date getCreateTime() {
    		return createTime;
    	}
    
    	public void setCreateTime(Date createTime) {
    		this.createTime = createTime;
    	}
    
    	public Date getExpireTime() {
    		return expireTime;
    	}
    
    	public void setExpireTime(Date expireTime) {
    		this.expireTime = expireTime;
    	}
    }
    </span></strong>

    实体类的设计原则:
           实现无参的默认的构造函数
           提供一个标识
           建议不要使用fianl修饰实体类
           建议为实体类生成get和set方法



    映射文件:user.hbm.xml

    <strong><span style="font-size:18px;"><?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
    	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.bjpowernode.hibernate">
    	<class name="User" table="t_user">
    		<id name="id" column="user_id" length="32" access="field">
    			<generator class="uuid"/>
    		</id>
    		<property name="name" length="30" unique="true" not-null="true"/>
    		<property name="password"/>
    		<property name="createTime" type="date" column="create_time"/>
    		<property name="expireTime"/>
    	</class>
    </hibernate-mapping></span></strong>


             在hibernate的映射文件中,使用class元素表示类和数据库中的表的映射关系。如果想修改表名,可以使用table属性。 table属性指定要映射的对应的数据库表名,如果省略,则以name作为表名。name属性指定持久化类(或者接口)的Java全限定名。

           length属性:表示该字段的字符长度,这个可以在数据库中设计,也可以在映射文件中写。 

           column:可以修改指定映射的列的列名。如果省略,则就是name名称作为列名。

     hibernate核心配置文件:

    <strong><span style="font-size:18px;"><!DOCTYPE hibernate-configuration PUBLIC
    	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
    	<session-factory>
    		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_basemapping</property>
    		<property name="hibernate.connection.username">root</property>
    		<property name="hibernate.connection.password">123</property>
    		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    		<property name="hibernate.show_sql">true</property>
    		<property name="hibernate.hbm2ddl.auto">update</property>
    		
    		<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
    		<mapping resource="com/bjpowernode/hibernate/User2.hbm.xml"/>
    		<mapping resource="com/bjpowernode/hibernate/User3.hbm.xml"/>
    	</session-factory>
    </hibernate-configuration></span></strong>


    hibernate的核心配置文件,可以配置sql语句的一些现实信息:是否在控制台显示sql语句,hibernate.show_sql设置为true。


            hibernate的基本映射,主要是可以通过配置文件,也可以通过注解的形式,在接下来的博客中,小编将会带着大家学习一下如果用注解来做基本映射。

  • 相关阅读:
    运维IT必备程序安装包
    网络基础TCP三次握手四次挥手
    新建Weblogic域启动报BEA090403和BEA000386提示密码认证有问题
    Weblogic开发模式和生产产品模式互换
    web api 返回 去除双引号转义符
    freeswitch esl :Rejected by acl “loopback.auto“问题
    freeswitch SIP 服务器一些常用配置
    因果推断综述
    Django 项目配置拆分独立
    wayne编译支持k8s1.16+
  • 原文地址:https://www.cnblogs.com/chenxiaochan/p/7237574.html
Copyright © 2020-2023  润新知