Questions tagged «hibernate»

Hibernate是一种Java语言的对象关系映射(ORM)库,使开发人员能够以远远超出对象/关系映射的方式在其应用程序中使用POJO风格的域模型。

13
Hibernate hbm2ddl.auto配置的可能值是什么,它们做什么?
我真的想更多地了解更新,导出以及可以提供的值,hibernate.hbm2ddl.auto 我需要知道何时使用更新,何时不使用更新?还有什么选择? 这些是可能在数据库上发生的更改: 新表 旧表中的新列 列已删除 列的数据类型已更改 列的类型更改了其属性 桌子掉了 列的值已更改 在每种情况下,最佳解决方案是什么?
1084 java  hibernate  hbm2ddl 

22
JPA和Hibernate有什么区别?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 2年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我知道JPA 2是一个规范,而Hibernate是ORM的工具。另外,我了解到Hibernate具有比JPA 2更多的功能。但是从实际的角度来看,真正的区别是什么? 我有使用iBatis的经验,现在我正在尝试学习Hibernate或JPA2。我拿起Pro JPA2书籍,并且一直指“ JPA提供者”。例如: 如果您认为某个功能应该被标准化,则应该大声疾呼并向您的JPA提供者提出要求 这使我感到困惑,所以我有几个问题: 我可以单独使用JPA2注释POJO即可从数据库中获取数据 JPA2是否应该与“ JPA Provider”一起使用,例如TopLink或Hibernate?如果是这样,那么与单独使用JPA2或单独使用Hibernate相比,使用JPA2 + Hibernate有什么好处? 您能推荐一本实用的JPA2书籍吗?“ Pro JPA2”似乎更像是一本关于JPA2的圣经和参考书(直到本书的后半部分才进入Queries)。是否有一本书针对JPA2采用问题/解决方法?
680 java  hibernate  jpa  jakarta-ee  orm 



8
使用JPA @OneToMany关联时,@ JoinColumn和mappedBy有什么区别
之间有什么区别? @Entity public class Company { @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY) @JoinColumn(name = "companyIdRef", referencedColumnName = "companyId") private List<Branch> branches; ... } 和 @Entity public class Company { @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef") private List<Branch> branches; ... }
516 java  hibernate  jpa  orm  one-to-many 

15
Hibernate引发MultipleBagFetchException-无法同时获取多个包
Hibernate在创建SessionFactory时抛出此异常: org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包 这是我的测试用例: Parent.java @Entity public Parent { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy="parent", fetch=FetchType.EAGER) // @IndexColumn(name="INDEX_COL") if I had this the problem solve but I retrieve more children than I have, one child is null. private List<Child> children; } Child.java @Entity public Child { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; …
471 java  hibernate  jpa  one-to-many  bag 

5
什么是高/低算法?
什么是高/低算法? 我已经在NHibernate文档中找到了这一点(这是生成唯一密钥的一种方法,第5.1.4.2节),但是我没有找到有关其工作原理的很好的解释。 我知道Nhibernate可以处理它,并且我不需要了解内部,但是我很好奇。


4
创建完美的JPA实体
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我已经使用JPA(实现休眠)一段时间了,每次我需要创建实体时,我都会遇到诸如AccessType,不可变属性,equals / hashCode等问题。 因此,我决定尝试找出每个问题的最佳常规做法,并写下来供个人使用。 但是,我不介意让任何人对此发表评论或告诉我我错了。 实体类 实现可序列化 原因:规范要求您必须这样做,但是某些JPA提供程序没有强制执行此操作。作为JPA提供程序的Hibernate不会强制执行此操作,但是如果尚未实现Serializable,它可能会因ClassCastException失败而失败。 建设者 用实体的所有必填字段创建一个构造函数 原因:构造函数应始终使创建的实例保持健全状态。 除了这个构造函数:还拥有一个包私有的默认构造函数 原因:Hibernate需要默认构造函数来初始化实体;允许使用private,但是在没有字节码检测的情况下,包私有(或公共)可见性对于运行时代理生成和有效的数据检索是必需的。 字段/属性 在一般情况下使用字段访问,在需要时使用属性访问 原因:这可能是最有争议的问题,因为没有明确的,令人信服的论点(财产使用权与实地使用权);但是,由于更清晰的代码,更好的封装并且无需为不可变字段创建设置器,因此字段访问似乎是普遍喜欢的方法 省略不可变字段的设置器(访问类型字段不需要) 属性可能是私有的 原因:我曾经听说保护(Hibernate)的性能更好,但是我在网上可以找到的是:Hibernate可以直接访问公共,私有和受保护的访问器方法,以及公共,私有和受保护的字段。 。选择取决于您,您可以将其匹配以适合您的应用程序设计。 等于/哈希码 如果仅在持久化实体时设置此ID,请不要使用生成的ID 根据喜好:使用不可变值形成唯一的业务密钥,并使用它来测试是否相等 如果唯一的业务密钥不可用,则使用在初始化实体时创建的非临时UUID;有关更多信息,请参见这篇出色的文章。 从不引用相关实体(ManyToOne);如果此实体(如父实体)需要成为业务密钥的一部分,则仅比较ID。只要使用属性访问类型,在代理上调用getId()不会触发实体的加载。 实体实例 @Entity @Table(name = "ROOM") public class Room implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue @Column(name = …
422 java  hibernate  jpa  equals 


30
如何解决“无法延迟初始化角色集合”的Hibernate异常
我有这个问题: org.hibernate.LazyInitializationException:无法延迟初始化角色集合:mvc3.model.Topic.comments,没有会话或会话被关闭 这是模型: @Entity @Table(name = "T_TOPIC") public class Topic { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; @ManyToOne @JoinColumn(name="USER_ID") private User author; @Enumerated(EnumType.STRING) private Tag topicTag; private String name; private String text; @OneToMany(mappedBy = "topic", cascade = CascadeType.ALL) private Collection<Comment> comments = new LinkedHashSet<Comment>(); ... public Collection<Comment> getComments() { return comments; …

14
如何在Spring Boot中记录SQL语句?
我想将SQL语句记录在文件中。 我在以下属性application.properties spring.datasource.url=... spring.datasource.username=user spring.datasource.password=1234 spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true security.ignored=true security.basic.enabled=false logging.level.org.springframework.web=INFO logging.level.org.hibernate=INFO logging.file=c:/temp/my-log/app.log 当我运行我的应用程序时 cmd>mvn spring-boot:run 我可以在控制台中看到sql语句,但它们未出现在文件app.log中。该文件仅包含来自spring的基本日志。 如何查看日志文件中的sql语句?


20
JPA hashCode()/ equals()困境
此处已经进行了一些 有关JPA实体的讨论,以及JPA实体类应使用哪种hashCode()/ equals()实现。它们中的大多数(如果不是全部)都依赖于Hibernate,但是我想中立地讨论它们(顺便说一下,我正在使用EclipseLink)。 在以下方面,所有可能的实现都有各自的优点和缺点: hashCode()/equals()合同一致性(不变性)为List/ Set操作 是否可以检测到相同的对象(例如,来自不同的会话,来自延迟加载的数据结构的动态代理) 实体在分离(或非持久)状态下是否行为正确 据我所知,有三种选择: 不要覆盖它们;依靠Object.equals()和Object.hashCode() hashCode()/ equals()工作 无法识别相同的对象,动态代理问题 独立实体没有问题 根据主键覆盖它们 hashCode()/ equals()坏了 正确的身份(对于所有管理实体) 独立实体的问题 根据Business-Id(非主键字段;外键如何?) 覆盖它们 hashCode()/ equals()坏了 正确的身份(对于所有管理实体) 独立实体没有问题 我的问题是: 我错过了一个选项和/或优点/缺点吗? 您选择了什么选项,为什么? 更新1: 通过“ hashCode()/ equals()被破坏”,我的意思是连续hashCode()调用可能会返回不同的值,也就是(当正确实施)不在的感觉打破ObjectAPI文档,但是当试图从检索改变实体引起的问题Map, Set或其他基于哈希Collection。因此,在某些情况下,JPA实现(至少是EclipseLink)将无法正常工作。 更新2: 谢谢您的回答-大多数都具有卓越的质量。 不幸的是,我仍然不确定哪种方法对实际应用程序将是最好的,或者不确定如何为我的应用程序确定最佳方法。因此,我将保持开放的态度,并希望有更多的讨论和/或意见。

21
JPA和Hibernate-条件与JPQL或HQL
使用Criteria或HQL有何利弊?Criteria API是在Hibernate中表达查询的一种很好的面向对象的方式,但是有时候Criteria Queries比HQL更难以理解/构建。 您何时使用标准以及何时使用HQL?在哪种用例中,您更喜欢什么?还是只是口味问题?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.