Hibernate备忘录-2

1.主键,在getID前加"@Id"

 

2.其他字段不加注解,默认是@Basic

 

3.@Enumerated(EnumType.STRING) ==@Enumerated(value=EnumType.STRING) ,当是value=的时候,可以省略value=

 

4.generator,native就行了,mysql:identity

 

5.uuid生成的是String类型

 

6.

@GeneratedValue:主键的产生策略,通过strategy属性指定。
默认情况下,JPA自动选择一个最适合底层数据库的主键生成策略

在javax.persistence.GenerationType中定义了以下几种可供选择的策略:
1) IDENTITY:表自增键字段-->mysql,sql server
2) AUTO: JPA自动选择合适的策略,是默认选项(相当于xml中的Native)
3) SEQUENCE:通过序列产生主键,通过@SequenceGenerator注解指定序列名-->oracle

4) TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

 

7.联合主键bean需要实现serializable和重写equal和hashcode,确保在内存中两个对象是唯一的,因为在数据库中你主键本身是要唯一的,联合主键用得不多,不过这点难说

 

8.Session s=sessionfactory.openSession();创建新的session,但是最后要close(),hibernate不太推荐

Session s=sessionfactory.getCurrentSession();如果上下文环境有session则从当前环境中获得,否则新创建,但是最后不要close().

sessionfactory.getCurrentSession();有界定事务边界的作用

他们不能混用

 

9.两种事物:一种是数据库本身的,一种是jta的(分布式)

tomcat没有jta功能,jboss可以

 

10.单独使用hibernate,crud需要try-catch,但与spring结合后则不需

 

11.三种状态:

new后:

transient  内存中的对象没有id,这个时候缓存中肯定还没有,因为还没有save,同理,数据库也没有id

save()后:

persisted 内存中的对象有id,session的缓存map中有id,数据库中有id

commit()后:

detached 内存中的对象有id,session的缓存已经没了,数据库中有id

 

12.

get:立刻发送sql语句

load:生成的是Teacher.class的代理对象,延迟加载,当用到数据的时候才发送

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值