hibernate配置详解笔记

[-]

  1. 一主配置文件hibernatecfgxml
  2. 二映像配置文件 类名hbmxml
  3. 位置和对用的类在同一目录下


一、主配置文件hibernate.cfg.xml

位置:放在src目录下。

主要包含信息:

一、数据库信息    数据库方言(类的全名) 及 数据库链接信息

1.      数据库方言

2.      数据库连接字符串

3.      数据库驱动类名

4.      数据库名

5.      数据库密码

二、其他配置

比如:

[html]  view plain copy
  1. 1.  <property name="show_sql">true</property><!-- 是否显示 sql语句-->  
  2. 2.  <property name="format_sql">false</property><!--是否格式化显示sql语句-->  
  3. 3.  <property name="hbm2ddl.auto">update</property><!--创建表的方式-->  
  4.     <!--  
  5.             create:在创建前,先删除表  
  6.             create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用  
  7.             update:一般在项目中使用  
  8.             validate:带有验证功能  
  9.          -->  

 

 

三、导入映像配置文件

[html]  view plain copy
  1. <mappingresourcemappingresource="com/xiaohui/hibernate/User.hbm.xml"/>  
  2.   
  3. 也可以不用配,在配置文件对象 Configuration 加载主配置文件后通过addClass(Obj.class)方法自动的加载同一目录下的类名.hbm.xml映像配置文件。  

示例代码

[html]  view plain copy
  1. <session-factory>  
  2.         <!-- 一、数据库信息    数据库方言(类的全名) 及 数据库链接信息 -->  
  3.         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>  
  4.         <property name="connection.url">jdbc:mysql:///hibernate</property>  
  5.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  6.         <property name="connection.username">root</property>  
  7.         <property name="connection.password">root</property>  
  8.         <!-- 二、 其他 配置 -->  
  9.         <property name="show_sql">true</property><!-- 是否显示 sql语句-->  
  10.         <property name="format_sql">false</property>  
  11.         <!--  
  12.             create:在创建前,先删除表  
  13.             create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用  
  14.             update:一般在项目中使用  
  15.             validate:带有验证功能  
  16.          -->  
  17.         <property name="hbm2ddl.auto">update</property>  
  18.         <!--三、 导入配置文件   
  19.         <mapping resource="com/xiaohui/hibernate/User.hbm.xml"/>  
  20.         -->  
  21.     </session-factory>  

二、映像配置文件 类名.hbm.xml

位置:和对用的类在同一目录下。

信息包含  需要映射的类的全名,以及映射到数据库的表名。类的属性名,表的字段名(不设置默认和类的属性名 一致。当属性名为数据库的关键字时,需要用 ` 反单引号括起来)字段名 包含普通字段(如:int,Integer,String,Date,boolean,byte[]),以及自定义对象。

如:

 

[html]  view plain copy
  1. <hibernate-mapping package="org.hibernate.test.extendshbm">  
  2.     <class name="com.xiaohi.c_hbm_property.Person" table="person">  
  3.         <id name="id" type="int" column="id">  
  4.             <generator class="increment"/>  
  5.         </id>  
  6.         <!--             类属性名        类型小写            对应的表列名 -->  
  7.         <property name="name" type="string" not-null="true" length="30"/>  
  8.         <property name="birthday" not-null="true" type="date" />  
  9.         <property name="gender" not-null="true" type="boolean"/>  
  10.         <property name="desc" not-null="true" type="text" column="`desc`"  length="5000"/>  
  11.         <property name="photo" not-null="true" type="binary" length="51200"/>  
  12.     </class>  
  13. </hibernate-mapping>  

一般主键的配置:

[html]  view plain copy
  1. <id name="id">  
  2.             <!-- identity,使用数据库的自动增长,在保存时会忽略手工指定的主键值而由数据库生成   
  3.                 要求此属性要是数字类型  
  4.             <generator class="identity"/>  
  5.             -->  
  6.             <!-- assigned,手工指定,比如指定UUID   
  7.             <generator class="assigned"/>  
  8.             -->  
  9.             <!-- uuid,由Hibernate生成UUID并指定为主键值,要求此属性要是String型   
  10.             <generator class="uuid"/>  
  11.             -->  
  12.             <!-- hilo,高低位算法生成主键,需要用到一个额外的表,所有的数据库都可以使用这种类型   
  13.             <generator class="hilo">  
  14.                 <param name="table">hi_value</param>  
  15.                 <param name="column">next_value</param>  
  16.                 <param name="max_lo">100</param>  
  17.             </generator>  
  18.             -->  
  19.             <!-- native,根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个 -->  
  20.             <generator class="native"/>  
  21.         </id>  

 

组合主键的配置:

[html]  view plain copy
  1. <!-- 映射联合主键的配置 -->  
  2.         <composite-id>  
  3.             <key-property name="firstName" type="string" />  
  4.             <key-property name="lastName" type="string" />  
  5.         </composite-id>  


当使用组合主键时,javaBean对象需要实现java.io.Serializable接口。并且在获取对象时,使用session.get(obj.class,obj)方法中obj需要设置联合主键的每一个值(单列主键的 一般直接传id值)

[java]  view plain copy
  1. public void getTest(){  
  2.         Session session = sessionFactory.openSession();  
  3.         session.beginTransaction();  
  4.         Person p = new Person();  
  5.         p.setFirstName("古");  
  6.         p.setLastName("天乐");  
  7.         Person user = (Person) session.get(Person.class, p);  
  8.         System.out.println(user.getFirstName()+":"+user.getLastName()+":"+user.getGender());  
  9.         session.getTransaction().commit();  
  10.         session.close();  
  11.     }  


组成关系的映射配置:

[html]  view plain copy
  1. <class name="com.xiaohui.hibernate.User" table="user">  
  2.         <id name="id">  
  3.             <generator class="native"/>  
  4.         </id>  
  5.         <property name="name" type="string"/>  
  6.         <!-- 组成关系映射 -->  
  7.         <component name="address" class="com.xiaohui.e_component.Address">  
  8.             <property name="address"/>  
  9.             <property name="tel"/>  
  10.             <property name="zipCode"/>  
  11.           
  12.         </component>  
  13.     </class>  

生成的表为5个字段 。

你可能感兴趣的:(java,Hibernate)