Hibernate持久化类与主键生成策略
来源:互联网 发布:天津市软件学院 编辑:程序博客网 时间:2024/05/17 10:03
一、持久化类
持久化类(Persistent Object)实际上就是POJO+hbm.xml。在Hibernate中,PO的编写规则为:
- 提供一个public权限的无参构造;
- 对属性进行private声明,并提供public getter/setter;
- 在PO中必须提供一个标识符(OID),OID与数据库的主键对应;
- PO中尽量使用基本数据类型的包装类(因为包装类默认null,而基本数据类型中,int默认值为0,会对数据存储产生影响,比如存在一个只有0和1取值的flag…);
- PO类不能使用final修饰。
———————————–
org.hibernate.Session中存在get和load方法,set方法会得到一个PO对象,是立刻执行查询,如果查询不存在,会返回null;load会得到PO的代理类型的对象,是一种延迟查询的策略,如果查询不存在,会抛出ObjectNotFoundException。
首先写了一个获得session的HibernateUtils,因为创建新的SessionFactory需要耗费大量资源。
package utils;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtils { private static Configuration config; private static SessionFactory sessionFactory; static { config = new Configuration().configure(); sessionFactory = config.buildSessionFactory(); } public static Session openSession(){ return sessionFactory.openSession(); }}
演示get和load方法的不同
package test;import org.hibernate.Session;import org.junit.Test;import domain.Customer;import utils.HibernateUtils;public class HibernateTest { @Test public void test1(){ Session session = HibernateUtils.openSession(); session.beginTransaction(); //get Customer customer1 = session.get(Customer.class, 5); System.out.println(customer1.getClass()+"------------"+customer1.getId()); //load Customer customer2 = session.load(Customer.class, 6); System.out.println(customer2.getClass()+"------------"+customer2.getId()); session.getTransaction().commit(); session.close(); }}
结果是
二、Hibernate主键生成策略
Hibernate中的主键分为自然主键和代理主键。自然主键是将具有业务含义的字段作为主键,代理主键是将不具备业务含义的字段作为主键。
increment:每次生成主键时自动递增。如果有多个应用访问一个数据库,可能产生主键冲突。
identity:根据mysql等的自动增长主键生成。
sequence:根据oracle等数据库生成的标识符。
native:根据底层数据库来自动选择,效率比较低。
uuid:采用128bit的UUID算法生成的标识符,容易保证主键的唯一性,占用空间会相对较大。
assigned:自然主键,由java程序负责生成。
0 0
- Hibernate持久化类与主键生成策略
- Hibernate持久化类与主键生成策略
- Hibernate学习-10:持久化类、主键生成策略
- hibernate_持久化类、主键生成策略
- hibernate之持久化类,主键生成策略,事务,缓存,查询api(02)
- Hibernate持久化类、主键生成策略、持久户对象、一级缓存、事务和五种检索方式
- hibernate的实体类编写规则与主键生成策略
- hibernate主键生成策略 @GeneratedValue 与 @GenericGenerator
- hibernate主键生成策略与配置详解
- hibernate主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate 主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- hibernate主键生成策略
- hibernate主键生成策略
- 在spring配置文件中引入properties文件--引出加载配置文件的对应方式
- 6.Unity3D商业游戏源码研究-变身吧主公-SceneLogin
- 找出数组中的最大和第二大元素需要进行几次比较?
- Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null
- 华为nexus 6p,联想900等 android手机加载webview 显示空白解决方案
- Hibernate持久化类与主键生成策略
- arguments.callee与递归
- Dangling metacharacter
- linux 学习体验2
- tpshop开源商城,切勿使用?
- Android Fragment的使用 六 适应屏幕大小
- 关于如何处理ubuntu16.04无法连接网络问题
- Beautiful People (zoj 2319)
- poj 3036 Honeycomb Walk 暴力枚举 dp