1.JPA概述
JPA(Java Persistence API),其实它就是一种规范(Java持久化接口),而不是什么开发工具,这里用到的hibernate4恰好实现了这一规范。JPA规范的好处就是不依赖于某一个ORM框架(如hibernate)
官方阐述的一些JPA的优势:1 标准化 ;2 对容器级特性的支持;3 简单易用,集成方便 4 可以媲美JDBC的查询能力 5 支持OO的高级特性
2.hibernate4.1.1下载
3.JPA所需的最小jar包配置
/lib/required/下面所有的jar包是必须的
其次,/lib/jpa/hibernate-entitymanager-4.1.1.Final.jar也拷贝到项目中
项目的创建,以及目录如下:
4.编写persistence.xml文件
可以拷贝已有的xml文件,这里实现的是JPA2.0规范
<?xml version="1.0" encoding="UTF-8"?>
<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="zjMusicJpa" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect" />
<property name="javax.persistence.validation.mode" value="none"/> <!-- 这句话不加出现:javax.persistence.PersistenceException -->
<property name="hibernate.connection.url" value="jdbc:sqlserver://localhost:1992;databaseName=DB_ZJMusic;instance=SQLSERVER08R2" />
<property name="hibernate.connection.username" value="sa" />
<property name="hibernate.connection.password" value="Zzj19920228" />
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
刚开始,由于参考其它博客(hibernate版本是3.x的,同时jpa是1.0)出现了javax.persistence.PersistenceException异常,原因是javax.persistence.validation.mode默认是auto的,如果不设置为none的话,会到类路径下查找bean-validation**.jar包,如果没有此包,则会出现上述异常
如果persistence.xml配置没有问题的话,xml文件的图标是会变的,不同于一般的xml文件,注意观察
5.编写实体类
@Entity
public class JMusic {
@Column(name="jmusicid")
@Id @GeneratedValue
private Integer id;//编号
@Column
private String musicname;
@Column
private String singer;//歌手
@Column
private String musicurl;//歌曲网络地址
@Column
@Temporal(TemporalType.DATE)
private Date distributeDate;//发布时间
@Column
private String album;//所属专辑名
这里自己加上get,set方法
6.JUnit测试
public class JpaTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test
public void createTable(){
//验证表
EntityManagerFactory factory = Persistence.createEntityManagerFactory("zjMusicJpa");
factory.close();
}
}
public class JpaTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test
public void createTable(){
//验证表
EntityManagerFactory factory = Persistence.createEntityManagerFactory("zjMusicJpa");
factory.close();
}
}