当前位置:首页>开发>正文

hibernate是什么意思 hibernate怎么读

2023-06-21 18:47:21 互联网 未知 开发

 hibernate是什么意思 hibernate怎么读

hibernate是什么意思

hibernate 英[ˈhaɪbəneɪt] 美[ˈhaɪbərneɪt]
vi. (某些动物) 冬眠,蛰伏
[例句]Hibernating insects begin to move.
蛰伏的昆虫们开始活动。
[其他] 第三人称单数:hibernates 现在分词:hibernating 过去式:hibernated过去分词:hibernated

hibernate怎么读

hibernate[英][haɪbəneɪt] [美][ˈhaɪbɚˌnet]
生词本
简明释义
vi.(某些动物)冬眠,蛰伏
第三人称单数:hibernates过去式:hibernated过去分词:hibernated现在分词:hibernating

以下结果由 金山词霸 提供
柯林斯高阶英汉词典 网络释义 百科释义 同反义词
1.VERB蛰伏;冬眠Animals that hibernate spend the winter in a state like a deep sleep.

Dormice hibernate from October to May...
榛睡鼠从10月冬眠到5月。
Hibernating insects begin to move.
蛰伏的昆虫们开始活动。

hibernate怎么记住他的意思

hibernate 是不及物动词 汉语解释为:(某些动物)冬眠, 蛰伏
例句:Some bears hibernate.
有些熊冬眠。
巧妙记忆方法:hi,(喂)ber(别)na(拿)te(它)。 喂,别拿它。(因为它在冬眠)。

希望可以帮到您!

hibernate, 请一 多对多 例子!

多对多
1 单向关联:
a)
关系模型(Teache多对多Student),从Teacher这一端能关联到students.
Teacher(id,name,students)多
Student(id,name)多
Set students=new HashSet()
在Teacher那一端配置
b) 例如:老师和学生的关系,老师需要知道自己教了哪些学生
c) 数据库:生成中间表
d) Annotation:@Many2Many
Teacher类中写:
private Set students = new HashSet()
@ManyToMany //多对多关联 Teacher是主的一方 Student是附属的一方
@JoinTable(name="t_s", //指定中间表表名
joinColumns={@JoinColumn(name="teacherid")},//本类主键在中间表生成的
对应字段名
inverseJoinColumns={@JoinColumn(name="studentid")}//对方类主键在中间表
生成的对应字段名
)
public Set getStudents(){……}
e) XML:




table定义中间表的表名





2 双向关联:
a)
多对多双向配置只需要在两端类进行配置就才可以.
关系模型(Teache多对多Student)
Teacher(id,name,students)多
Student(id,name,teachers)多
Set students = new HashSet()
Set teachers = new HashSet()

b) 老师知道自己教了哪些学生,学生也知道教自己的有哪些老师
c) 数据库:生成中间表
d) Annotation:
在Teacher这一端的students上配置
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")}//设置对方表的外键id
)
在Student一端的teachers只需要配置
@ManyToMany(mappedBy="students")
注意:mappedBy 与 @JoinTable等一类的配置要分开,不然表字段可能乱
e) XML:
XML配置方式:两端配置一样,注意表名和生成的中间表的字段属性名要一致
Teacher那一端配置




在Student那一端配置




生成的数据库表和上面是一样的
随机应变

hibernate的关联关系映射

Hibernate的关联关系映射
1.单向关联:
a.多对一:
在子表中加入:


b.一对一:其实就是many-to-one的一种情况.唯一不同的就是关联中的外键字段具有唯一性约束.
在子表中加入:(unique="true")

或者
在主表加入:


c.一对多:
在主表中加入:





2.使用连接表的单向关联
a.一对多:通过制定unique="true",我们可以把多样性从多对多改变为一对多。
在主表中添加:





b.多对一:
在子表中添加:





c.一对一:
在子表中添加:





d.多对多:





3.双向连接:
a.一对多/多对一:
在子表中添加:(子表跟单向的完全相同)

在主表中添加:(主表比单向多一个inverse="true")





b.一对一:
基于外键关联:
在子表中添加:(子表跟单向的完全相同)

在主表中添加:(主表比单向不同的是constrained="true"改成property-ref="address")

或者
基于主键关联的:
在子表中添加:

在主表中添加:


4.使用连接表的双向关联:
a.一对多/多对一
在子表中添加:




在主表中添加:





b.一对一:
在子表中添加:




在主表中添加:





c.多对多:








如何优化hibernate

是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch
Size=15,设置Fetch
Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。
  即在hibernate配制文件中进行配制:
1 <property name="hibernateProperties">
2 <props>3 <propkey="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
4 <prop key="hibernate.show_sql">false</prop>
5 <!-- Create/update the database tables automatically when the JVMstarts up
6 <prop key="hibernate.hbm2ddl.auto">update</prop> -->
7 <!-- Turn batching off for better error messages underPostgreSQL
8 <prop key="hibernate.jdbc.batch_size">100</prop> -->
9 <prop key="hibernate.jdbc.batch_size">50</prop>
10 </props>
11 </property>Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch
Size越小,读数据库的次数越多,速度越慢。
  2、如果是超大的系统,建议生成htm文件。加快页面提升速度。
  3、不要把所有的责任推在hibernate上,对代码进行重构,减少对数据库的操作,尽量避免在数据库查询时使用in操作,以及避免递归查询操作,代码质量、系统设计的合理性决定系统性能的高低。
  4、 对大数据量查询时,慎用list()或者iterator()返回查询结果,  (1).
使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。  (2).

使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始
化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用
iterator()才有优势。
  5、在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时方会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。
  6、对含有关联的PO(持久化对象)时,若default-cascade="all"或者
“save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。

 7、对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,
所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。尽可能对每个页面的
显示,对数据库的操作减少到100----150条以内。越少越好。

hibernate对象有几种状态

答案转载自csdn论坛:http://blog.csdn.net/heng_ji/article/details/686281实体的生命周期中,实体主要经过瞬时(Transient),托管(Attatched或Managed),游离(Detached)和销毁

(Removed)四个状态.

瞬时状态:是指对象被new之后尚未保存到数据库,一旦服务器停止,JVM会回收它所占的内存资源,此时对

象没有与session关联.

托管状态:在数据库中已有数据与之对应,且与session相关联。实体状态转换到托管状态的方法:
A.调用persist(),实体从游离转变到托管,最后变成持久化状态.
B.调用find()或Query执行查询,实体从持久变成托管.
C.调用refresh(),游离实体将被重新加载,变成托管状态.
D.调用merge(),将游离实体变成托管实体.

游离状态:数据库中有数据与之对应但不在session的管理范围,它的属性不与数据库中持久化的实体同

步.
实体从托管变成游离的情况有:
A.当一个事务结束,实体超过持久化上下文作用域,实体变成游离态
B.当复制实体对象或序列化时,实体将变成游离态
C.调用clear方法时,所有的实体将强制转化为游离态

销毁状态:是实体从数据库删除后的状态

最新文章