hibernate配置详解笔记
2015-12-05 11:04
686 查看
[-]
一主配置文件hibernatecfgxml
二映像配置文件 类名hbmxml
位置和对用的类在同一目录下
如
位置:放在src目录下。
主要包含信息:
一、数据库信息 数据库方言(类的全名) 及 数据库链接信息
1. 数据库方言
2. 数据库连接字符串
3. 数据库驱动类名
4. 数据库名
5. 数据库密码
二、其他配置
比如:
[html] view
plaincopy
1. <property name="show_sql">true</property><!-- 是否显示 sql语句-->
2. <property name="format_sql">false</property><!--是否格式化显示sql语句-->
3. <property name="hbm2ddl.auto">update</property><!--创建表的方式-->
<!--
create:在创建前,先删除表
create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
update:一般在项目中使用
validate:带有验证功能
-->
三、导入映像配置文件
[html] view
plaincopy
<mappingresourcemappingresource="com/xiaohui/hibernate/User.hbm.xml"/>
也可以不用配,在配置文件对象 Configuration 加载主配置文件后通过addClass(Obj.class)方法自动的加载同一目录下的类名.hbm.xml映像配置文件。
示例代码
[html] view
plaincopy
<session-factory>
<!-- 一、数据库信息 数据库方言(类的全名) 及 数据库链接信息 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="connection.url">jdbc:mysql:///hibernate</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 二、 其他 配置 -->
<property name="show_sql">true</property><!-- 是否显示 sql语句-->
<property name="format_sql">false</property>
<!--
create:在创建前,先删除表
create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
update:一般在项目中使用
validate:带有验证功能
-->
<property name="hbm2ddl.auto">update</property>
<!--三、 导入配置文件
<mapping resource="com/xiaohui/hibernate/User.hbm.xml"/>
-->
</session-factory>
[html] view
plaincopy
<hibernate-mapping package="org.hibernate.test.extendshbm">
<class name="com.xiaohi.c_hbm_property.Person" table="person">
<id name="id" type="int" column="id">
<generator class="increment"/>
</id>
<!-- 类属性名 类型小写 对应的表列名 -->
<property name="name" type="string" not-null="true" length="30"/>
<property name="birthday" not-null="true" type="date" />
<property name="gender" not-null="true" type="boolean"/>
<property name="desc" not-null="true" type="text" column="`desc`" length="5000"/>
<property name="photo" not-null="true" type="binary" length="51200"/>
</class>
</hibernate-mapping>
一般主键的配置:
[html] view
plaincopy
<id name="id">
<!-- identity,使用数据库的自动增长,在保存时会忽略手工指定的主键值而由数据库生成
要求此属性要是数字类型
<generator class="identity"/>
-->
<!-- assigned,手工指定,比如指定UUID
<generator class="assigned"/>
-->
<!-- uuid,由Hibernate生成UUID并指定为主键值,要求此属性要是String型
<generator class="uuid"/>
-->
<!-- hilo,高低位算法生成主键,需要用到一个额外的表,所有的数据库都可以使用这种类型
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
-->
<!-- native,根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个 -->
<generator class="native"/>
</id>
组合主键的配置:
[html] view
plaincopy
<!-- 映射联合主键的配置 -->
<composite-id>
<key-property name="firstName" type="string" />
<key-property name="lastName" type="string" />
</composite-id>
当使用组合主键时,javaBean对象需要实现java.io.Serializable接口。并且在获取对象时,使用session.get(obj.class,obj)方法中obj需要设置联合主键的每一个值(单列主键的 一般直接传id值)
[java] view
plaincopy
public void getTest(){
Session session = sessionFactory.openSession();
session.beginTransaction();
Person p = new Person();
p.setFirstName("古");
p.setLastName("天乐");
Person user = (Person) session.get(Person.class, p);
System.out.println(user.getFirstName()+":"+user.getLastName()+":"+user.getGender());
session.getTransaction().commit();
session.close();
}
组成关系的映射配置:
[html] view
plaincopy
<class name="com.xiaohui.hibernate.User" table="user">
<id name="id">
<generator class="native"/>
</id>
<property name="name" type="string"/>
<!-- 组成关系映射 -->
<component name="address" class="com.xiaohui.e_component.Address">
<property name="address"/>
<property name="tel"/>
<property name="zipCode"/>
</component>
</class>
生成的表为5个字段 。
一主配置文件hibernatecfgxml
二映像配置文件 类名hbmxml
位置和对用的类在同一目录下
如
一、主配置文件hibernate.cfg.xml
位置:放在src目录下。主要包含信息:
一、数据库信息 数据库方言(类的全名) 及 数据库链接信息
1. 数据库方言
2. 数据库连接字符串
3. 数据库驱动类名
4. 数据库名
5. 数据库密码
二、其他配置
比如:
[html] view
plaincopy
1. <property name="show_sql">true</property><!-- 是否显示 sql语句-->
2. <property name="format_sql">false</property><!--是否格式化显示sql语句-->
3. <property name="hbm2ddl.auto">update</property><!--创建表的方式-->
<!--
create:在创建前,先删除表
create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
update:一般在项目中使用
validate:带有验证功能
-->
三、导入映像配置文件
[html] view
plaincopy
<mappingresourcemappingresource="com/xiaohui/hibernate/User.hbm.xml"/>
也可以不用配,在配置文件对象 Configuration 加载主配置文件后通过addClass(Obj.class)方法自动的加载同一目录下的类名.hbm.xml映像配置文件。
示例代码
[html] view
plaincopy
<session-factory>
<!-- 一、数据库信息 数据库方言(类的全名) 及 数据库链接信息 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="connection.url">jdbc:mysql:///hibernate</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 二、 其他 配置 -->
<property name="show_sql">true</property><!-- 是否显示 sql语句-->
<property name="format_sql">false</property>
<!--
create:在创建前,先删除表
create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
update:一般在项目中使用
validate:带有验证功能
-->
<property name="hbm2ddl.auto">update</property>
<!--三、 导入配置文件
<mapping resource="com/xiaohui/hibernate/User.hbm.xml"/>
-->
</session-factory>
二、映像配置文件 类名.hbm.xml
位置:和对用的类在同一目录下。
信息包含 需要映射的类的全名,以及映射到数据库的表名。类的属性名,表的字段名(不设置默认和类的属性名 一致。当属性名为数据库的关键字时,需要用 ` 反单引号括起来)字段名 包含普通字段(如:int,Integer,String,Date,boolean,byte[]),以及自定义对象。
如:
[html] view
plaincopy
<hibernate-mapping package="org.hibernate.test.extendshbm">
<class name="com.xiaohi.c_hbm_property.Person" table="person">
<id name="id" type="int" column="id">
<generator class="increment"/>
</id>
<!-- 类属性名 类型小写 对应的表列名 -->
<property name="name" type="string" not-null="true" length="30"/>
<property name="birthday" not-null="true" type="date" />
<property name="gender" not-null="true" type="boolean"/>
<property name="desc" not-null="true" type="text" column="`desc`" length="5000"/>
<property name="photo" not-null="true" type="binary" length="51200"/>
</class>
</hibernate-mapping>
一般主键的配置:
[html] view
plaincopy
<id name="id">
<!-- identity,使用数据库的自动增长,在保存时会忽略手工指定的主键值而由数据库生成
要求此属性要是数字类型
<generator class="identity"/>
-->
<!-- assigned,手工指定,比如指定UUID
<generator class="assigned"/>
-->
<!-- uuid,由Hibernate生成UUID并指定为主键值,要求此属性要是String型
<generator class="uuid"/>
-->
<!-- hilo,高低位算法生成主键,需要用到一个额外的表,所有的数据库都可以使用这种类型
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
-->
<!-- native,根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个 -->
<generator class="native"/>
</id>
组合主键的配置:
[html] view
plaincopy
<!-- 映射联合主键的配置 -->
<composite-id>
<key-property name="firstName" type="string" />
<key-property name="lastName" type="string" />
</composite-id>
当使用组合主键时,javaBean对象需要实现java.io.Serializable接口。并且在获取对象时,使用session.get(obj.class,obj)方法中obj需要设置联合主键的每一个值(单列主键的 一般直接传id值)
[java] view
plaincopy
public void getTest(){
Session session = sessionFactory.openSession();
session.beginTransaction();
Person p = new Person();
p.setFirstName("古");
p.setLastName("天乐");
Person user = (Person) session.get(Person.class, p);
System.out.println(user.getFirstName()+":"+user.getLastName()+":"+user.getGender());
session.getTransaction().commit();
session.close();
}
组成关系的映射配置:
[html] view
plaincopy
<class name="com.xiaohui.hibernate.User" table="user">
<id name="id">
<generator class="native"/>
</id>
<property name="name" type="string"/>
<!-- 组成关系映射 -->
<component name="address" class="com.xiaohui.e_component.Address">
<property name="address"/>
<property name="tel"/>
<property name="zipCode"/>
</component>
</class>
生成的表为5个字段 。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统