处理一些遗留的hibernate代码.
如何使用hbm.xml(hibernate映射文件)而不是注释执行以下操作?
@Table(name="users", uniqueConstraints = {
@UniqueConstraint(columnNames={"username", "client"}),
@UniqueConstraint(columnNames={"email", "client"})
})
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String username;
private String email;
private Client client;
}
Run Code Online (Sandbox Code Playgroud) persistence hibernate constraints unique-constraint hibernate-mapping
这是我在阅读了几个关于jpa批量插入的主题后创建的简单示例,我有2个持久对象User和Site.一个用户可以有很多站点,所以我们在这里有一对多的关系.假设我想创建用户并创建/链接几个站点到用户帐户.考虑到我愿意为Site对象使用批量插入,这是代码的样子.
User user = new User("John Doe");
user.getSites().add(new Site("google.com", user));
user.getSites().add(new Site("yahoo.com", user));
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
entityManager.persist(user);
tx.commit();
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码(我使用hibernate作为jpa实现提供程序)时,我看到以下sql输出:
Hibernate: insert into User (id, name) values (null, ?)
Hibernate: call identity()
Hibernate: insert into Site (id, url, user_id) values (null, ?, ?)
Hibernate: call identity()
Hibernate: insert into Site (id, url, user_id) values (null, ?, ?)
Hibernate: call identity()
Run Code Online (Sandbox Code Playgroud)
所以,我的意思是"真正的"批量插入不起作用或我感到困惑?
以下是此示例项目的源代码,这是maven项目,因此您只需下载并运行mvn install来检查输出.
更新:
在Ken Liu亲切地建议之后,我已禁用Site对象id自动生成:
User user = new User("John Doe");
user.getSites().add(new Site(1, "google.com", user));
user.getSites().add(new …Run Code Online (Sandbox Code Playgroud) 在模型类中使用JavaFX bean属性是否正确?
我想知道在模型类中使用属性是否能够更容易地使用视图组件绑定它们是一个好习惯.我不担心将来这些库的可用性,因为我的程序将在JRE8或更高版本上运行,但在模型类中使用JavaFX库的性质让我持怀疑态度,我担心当前和未来的不兼容性,特别是因为我想使用Hibernate来持久保存这些属性.
注意:我使用纯JavaFX环境,在我的应用程序中永远不需要Swing兼容性.
我有一个内存数据源:
java.sql.Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "sa", "");
emf = Persistence.createEntityManagerFactory("manager");
Run Code Online (Sandbox Code Playgroud)
但是现在我被卡住了.我想将它用作J2SE应用程序中的JPA数据源.我已经浏览了整个网络,但所有信息都与J2EE有关.
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager">
<jta-data-source>/*What to enter here?*/</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud) 我一直在寻找一篇文章,解释NSCoding(NSKeyedArchiver ...)使用CoreData(SQLite ....)的优缺点.
有很多的选择,我可以实现自己的自定义二进制读/写器,或使用的Plist/XML/JSON ...或使用SQLite或NSCoding.
我现在有点迷失了.任何机构都可以解释MAIN功能之间的区别吗?
我想为我的Web应用程序使用Java Persistence API(JPA).
有流行的JPA实现,如Hibernate,Toplink和EclipseLink.什么实施是一个很好的选择,为什么?
我正在制作游戏,当我关闭应用程序时(关闭多任务管理器),我的所有数据都消失了!所以,我的问题很简单:如何保存数据?
如果我有多个线程,每个使用注入器来获取EntityManager对象,每个使用em对象来选择其他类对象的列表.准备用于for循环.
如果一个线程首先完成并调用clear(),那会影响其他线程吗?喜欢for循环会有异常吗?
close()怎么样?
如果答案是"它取决于",那么(类定义?方法调用?)和where(java code?annotation?xml?)应该看看它是如何依赖的?
我没有写源,我只是在没有文档的情况下使用其他人的库.
谢谢.