Tag: jpa

JPA:@JoinColumn和@PrimaryKeyJoinColumn之间的区别?

@JoinColumn和@PrimaryKeyJoinColumn什么@PrimaryKeyJoinColumn ? 您使用@JoinColumn作为外键的一部分的列。 典型的列可能看起来像(例如,在具有附加属性的连接表中): @ManyToOne @JoinColumn(name = "…") private OtherClass oc; 如果我也推动专栏成为一个PK(也就是识别关系),会发生什么? 由于列现在是PK,我必须用@Id标记它: @Id @ManyToOne @JoinColumn(name = "…") private OtherClass oc; 现在的问题是: @Id + @JoinColumn与@JoinColumn相同吗? @ManyToOne @PrimaryKeyJoinColumn(name = "…") private OtherClass oc; 如果没有,那么@PrimaryKeyJoinColumn在那里?

使用什么:JPQL或Criteria API?

我的Java应用程序正在使用JPA进行对象持久化。 业务领域非常简单(只有三个类是持久的,每个属性有3-5个)。 查询也很简单。 问题是我应该使用哪种方法:JPQL还是Criteria API?

Hibernate和Spring Data JPA有什么区别?

Hibernate和Spring数据Jpa的主要区别是什么? 在什么情况下,我们不应该使用Hibernate或Spring Data JPA。 另外当Spring JDBC模板可能比Hibernate / spring数据jpa更有效

JPA标准教程

我一直在试图find一个JPA Criteria API教程,但一直没有太大的成功。 你知道任何初学者吗? 我想开始在Java5 / Maven应用程序中使用它来构build复杂的search查询。

如何使一个实体只读?

使用JPA只读实体的正确方法是什么? 我希望我的数据库表不能以编程方式修改。 我想我明白我应该用LockModeType.READlocking我的对象。 是否有可能使用注释使我的实体从数据库检索后直接locking? 或者我必须乱七八糟,并重写我的通用DAO的具体实体?

弹簧启动默认H2 jdbc连接(和H2控制台)

我只是试图看到一个embedded式H2数据库的H2数据库内容,当我没有在我的application.properties中指定任何东西时,spring-boot会创build一个embedded式H2数据库,并以mvn spring:run开头。 我可以看到hibernateJPA创build表,但如果我尝试访问下面的URL在数据库中的h2控制台没有表。 http://localhost:8080/console/ 我看到这样的build议: 查看由Spring启动的embedded式H2数据库的内容 但是我不知道在spring-boot中把build议的XML放在哪里,即使我这样做了,我也不希望h2console在外部数据库configuration的时候可用,所以我更需要处理这个与一些有条件的代码(或者也许只是允许弹簧自动处理它在最理想的情况下,其中我只包括H2时,mavenconfiguration文件被激活)。 有没有人有一些示例代码显示如何让H2控制台在启动工作(也是如何找出弹簧使用的jdbc连接string是什么)?

如何testingSpring数据仓库?

我想要一个在Spring Data的帮助下创build的仓库(比如UserRepository )。 我是新的春季数据(但不是spring),我用这个教程 。 我select处理数据库的技术是JPA 2.1和Hibernate。 问题是,我对如何为这样的存储库编写unit testing一无所知。 让我们以create()方法为例。 由于我正在testing第一,所以我应该写一个unit testing – 这就是我遇到的三个问题: 首先,如何将一个EntityManager的模拟注入UserRepository接口的不存在的实现中? Spring Data会根据这个接口生成一个实现: public interface UserRepository extends CrudRepository<User, Long> {} 然而,我不知道如何强制它使用EntityManager模拟和其他模拟 – 如果我自己写了实现,我可能会有一个EntityManager的setter方法,允许我使用我的模拟进行unit testing。 (至于实际的数据库连接,我有一个JpaConfiguration类,用@Configuration和@EnableJpaRepositories注释,它在编程上为DataSource , EntityManagerFactory , EntityManager等定义了bean。但是,存储库应该是testing友好的并允许重写这些东西)。 其次,我应该testing一下互动吗? 我很难弄清楚应该调用什么EntityManager和Query方法(类似于verify(entityManager).createNamedQuery(anyString()).getResultList(); ),因为不是我正在写执行。 第三,我应该首先对Spring数据生成的方法进行unit testing吗? 据我所知,第三方库代码不应该被unit testing – 只有开发者编写的代码应该是unit testing的。 但是,如果这是真的,它仍然会把第一个问题带回到现场:比如,我有一些自定义方法用于存储库,为此我将编写实现,如何将EntityManager和Query的EntityManager注入最终,生成存储库? 注意:我将使用集成testing和unit testing来testing我的版本库。 对于我的集成testing,我正在使用HSQL内存数据库,显然我没有使用数据库进行unit testing。 也许是第四个问题,在集成testing中testing正确的对象图创build和对象图检索是否正确(比如,我有一个用Hibernate定义的复杂对象图)? 更新:今天我继续尝试模拟注入 – 我创build了一个静态内部类允许模拟注入。 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @Transactional […]

JPA:单向多对一和级联删除

说我有一个单向的 @ManyToOne关系如下: @Entity public class Parent implements Serializable { @Id @GeneratedValue private long id; } @Entity public class Child implements Serializable { @Id @GeneratedValue private long id; @ManyToOne @JoinColumn private Parent parent; } 如果我有一个父P和子C 1 … C n引用回P,那么在JPA中有一个干净漂亮的方法来在P被移除时自动删除子C 1 … C n (即entityManager.remove(P) )? 我在找的是一个类似于SQL中的ON DELETE CASCADE的function。

JPA或JDBC,它们有什么不同?

我正在学习Java EE,我用glassfish下载了eclipse。 我看了一些例子,还阅读了Oracle文档,以了解Java EE 5的全部内容。连接到数据库非常简单。 我打开了一个dynamic的web项目,创build了一个会话EJB,我用EntityManager和get方法可以访问存储的数据表。 对于我的下一个项目,我创build了一个简单的类,然后访问一些数据库表。 我遇到的第一个问题是,PersistenceUnit属性只能被EJB,Servlet等认可,而不是一个简单的java类。 那么我不能使用EntityManager的方式(或者我可以吗?) 我被要求去“JDBC”的方式。 我遇到的第一个问题是连接到数据库。 看来这一切都必须硬编码。 我有一个persistence.xml,我可以很容易地configuration数据库连接。 即使为DB设置驱动也很容易。 在JDBC中也没有get / set方法来访问表实体。 如何理解与JDBC相关的JPA和持久性? JPA是怎么想的? 为什么有set / get方法? 有人可以抛开这两者的本质,什么是没有“行话”的优点/缺点? 也请build议一些链接。 一个简单的谷歌searchJPA和JDBC的差异导致我一些网站充满了“术语”,我不能遵循:(

CascadeType.REFRESH实际上做了什么?

CascadeType.REFRESH实际上做了什么? 它的定义是 当我们刷新一个实体时,所有在这个字段中保存的实体也会刷新 但是这在实践中意味着什么呢? 有人能给我一个简单的例子吗?