本文共 4714 字,大约阅读时间需要 15 分钟。
为了节省时间,更加具体的解释我们就略过吧。
二.在IDEA中使用JPA
添加相关的maven依赖
UTF-8 1.7 1.7 5.2.17.Final 2.9.9 junit junit 4.11 test mysql mysql-connector-java 5.1.37 org.hibernate hibernate-core 4.3.10.Final org.hibernate hibernate-entitymanager 4.3.10.Final org.hibernate.javax.persistence hibernate-jpa-2.1-api 1.0.0.Final org.hibernate.common hibernate-commons-annotations 4.0.5.Final joda-time joda-time ${goda.time.version} org.jadira.usertype usertype.core 6.0.1.GA antlr antlr 2.7.7 dom4j dom4j 1.6.1 org.jboss jandex 1.1.0.Final org.javassist javassist 3.18.1-GA org.jboss.logging jboss-logging 3.1.4.GA org.jboss.logging jboss-logging-annotations 1.2.0.Beta1 provided org.jboss.spec.javax.transaction jboss-transaction-api_1.1_spec 1.0.0.Final javax.ejb ejb-api 3.0
在IDEA中,resources文件夹下,也就是资源文件夹下,创建META-INF文件夹,在该文件夹下创建persistence.xml文件,添加以下配置。
如下:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
在IDEA的右边有Database,按以下步骤操作即可。
这里也可以不配置,配置之后,可以在IDEA中直接看到数据库中的表,并且之后再IDEA中写的代码也不用有警告。
添加你的数据库名字,第一次配置下边会提示你下载插件,很具提示即可。
创建User类
package com.hly.jpa.model.oneToOne;import javax.persistence.*;/** * @author :hly * @github :github.com/SiriusHly * @blog :blog.csdn.net/Sirius_hly * @date :2018/9/27 */@Entity//指定表名,指定唯一约束@Table(name = "user",uniqueConstraints = {@UniqueConstraint(columnNames = {"id","name"})})public class User { @Id//指定主键 @GeneratedValue private int id; @Column private String name; @Column private String password; //一对一映射 @OneToOne(optional = true, cascade = CascadeType.ALL) @JoinColumn(name = "articleId", unique = true) public Article article; //省略了getter和setter}
/** * 获取应用管理的EntityManager */ @Test public void testApplicationEntityManager() { EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("MyJPA"); EntityManager em = entityManagerFactory.createEntityManager(); em.getTransaction().begin(); User user = new User(); user.setName("hly"); //以上两行为新建状态 //托管状态 em.persist(user); //事务提交或调用flush()方法后会同步到数据库 em.getTransaction().commit(); //根据主键获取对象 //System.err.println(em.find(User.class,1)); //System.err.println(em.getReference(User.class,1)); em.close(); entityManagerFactory.close(); }
数据库中插入数据则成功。
完整代码在笔者的,欢迎访问。
清晰思维导图分享地址为: