JPA Hibernate应用实例
1.配置文件:persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="TestJPA" transaction-type="RESOURCE_LOCAL"> <!-- JAP实现的提供者
1.如果只有一个提供者,可以不写 -->
<provider>org.hibernate.ejb.HibernatePersistence</provider> <class>com.hanqi.dao.JPANews</class> <properties> <!-- 数据库连接 -->
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="javax.persistence.jdbc.user" value="test"/>
<property name="javax.persistence.jdbc.password" value="test"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/> <!-- JPA提供者的配置 -->
<!-- 数据库方言 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<!-- sql语句/调试 -->
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<!-- 自动建表(正向工程)方式 -->
<property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit>
</persistence>
2.编写实体类:JPANews.java
package com.hanqi.dao; import java.util.Date; import javax.persistence.*;
@NamedQuery(name="cx",query="from JPANews n where n.id = ?")
@Table(name="JPA_News")//类与表之间的映射关系
@Entity //实体类
public class JPANews { private Integer id;
private String title;
private String contant;
private Date createdate;
private String author; @GeneratedValue(strategy=GenerationType.AUTO)//主键生成策略
@Id//指定主键
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
} @Basic
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContant() {
return contant;
}
public void setContant(String contant) {
this.contant = contant;
} /**
* @return the createdate
*/
@Column(name="CREATEDATE")
@Basic
public Date getCreatedate() {
return createdate;
}
/**
* @param createdate the createdate to set
*/
public void setCreatedate(Date createdate) {
this.createdate = createdate;
}
/**
* @return the author
*/
public String getAuthor() {
return author;
}
/**
* @param author the author to set
*/
public void setAuthor(String author) {
this.author = author;
} @Override
@Transient
public String toString() {
return "News [id=" + id + ", title=" + title + ", contant=" + contant + ", createdate=" + createdate + "]";
} }
3.测试用例TestJPA.java
package com.hanqi.dao; import static org.junit.Assert.*; import java.util.Date;
import java.util.List; import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query; import org.junit.*;
import org.junit.Test; public class TestJPA {
EntityManagerFactory entityManagerFactory = null;
EntityManager entityManager = null;
EntityTransaction transaction = null; @Before
public void init()
{
//1. 创建 EntitymanagerFactory
String persistenceUnitName = "TestJPA"; entityManagerFactory =
Persistence.createEntityManagerFactory(persistenceUnitName); //2. 创建 EntityManager. 类似于 Hibernate 的 SessionFactory
entityManager = entityManagerFactory.createEntityManager(); //3. 开启事务
transaction = entityManager.getTransaction();
transaction.begin();
} @After
public void destory()
{
//5. 提交事务
transaction.commit(); //6. 关闭 EntityManager
entityManager.close(); //7. 关闭 EntityManagerFactory
entityManagerFactory.close();
} @Test
public void testjpa()
{ //数据操作
JPANews jn = new JPANews(); jn.setTitle("标题");
jn.setAuthor("作者");
jn.setContant("内容");
jn.setCreatedate(new Date());
//
// entityManager.persist(jn);//保存
JPANews jn2 = entityManager.merge(jn);//saveOrUpdate System.out.println(jn);
System.out.println(jn2);//从瞬时状态转变为持久化状态jpa是创建一个新对象将旧对象信息拷贝到新对象中 // JPANews jpan = entityManager.find(JPANews.class, 41);//立即加载
//
// jpan.setTitle("新的标题123");
//
// entityManager.flush();//提交语句
// System.out.println(jpan);
// //延迟加载
// JPANews jpan2 = entityManager.getReference(JPANews.class, 42);
//
// System.out.println("id="+jpan2.getId());
// System.out.println("标题="+jpan2.getTitle());
//
// entityManager.remove(jpan2);//删除 } @Test
public void testjpql()
{
//JPQL语句
String jpql = "from JPANews n where n.id = ?"; Query q = entityManager.createQuery(jpql); // Query q = entityManager.createNamedQuery("cx");//执行实体类注解中的jpql语句 q.setParameter(1, 41);//添加jpql语句参数,占位符编号从1开始 List<JPANews> l = q.getResultList(); System.out.println("长度=" + l.size()); } }
JPA Hibernate应用实例的更多相关文章
- Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案
最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https: ...
- Spring Boot + Jpa(Hibernate) 架构基本配置
本文转载自:https://blog.csdn.net/javahighness/article/details/53055149 1.基于springboot-1.4.0.RELEASE版本测试 2 ...
- SpringBoot + Jpa(Hibernate) 架构基本配置
1.基于springboot-1.4.0.RELEASE版本测试 2.springBoot + Hibernate + Druid + Mysql + servlet(jsp) 一.maven的pom ...
- Spring Boot 2.x 之 Spring Data JPA, Hibernate 5
1. Spring Boot常用配置项 基于Spring Boot 2.0.6.RELEASE 1.1 配置属性类 spring.jpa前缀的相关配置项定义在JpaProperties类中, 1.2 ...
- 持久化框架Hibernate 开发实例(一)
1 Hibernate简介 Hibernate框架是一个非常流行的持久化框架,其中在web开发中占据了非常重要的地位, Hibernate作为Web应用的底层,实现了对数据库操作的封装.HIberna ...
- Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题
(转载)Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题 这几天在用spring boot开发项目, 在开发的过程中遇到一个问题hibernate在执 ...
- Spring4.x Jpa + hibernate的配置(废弃JpaTemplate)
近年来 ORM(Object-Relational Mapping,对象关系映射,即实体对象和数据库表的映射)技术市场热闹非凡,各种各样的持久化框架应运而生,其中影响最大的是 Hibernate 和 ...
- springboot 集成 jpa/hibernate
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 五、spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate
1.pom添加依赖 <!-- spring data jpa,会注入tomcat jdbc pool/hibernate等 --> <dependency> <group ...
随机推荐
- 学习shell中遇到的一些基础问题总结
今天入门Shell脚本编程:今天的目标是完成冒泡排序,遇到了很多问题,总结了一下: 我从c转到shell遇到了这样的一些情况: 1:首先这几个符号非常重要 $变量:把变量的值拿出来使用(所以赋值语句应 ...
- C#语言数据总结
整数类型 sbyte -128~127之间 byte 0~255 short(Int16) -32768~32768 ushort(UInt16) 0~65535 Int (Int32) ...
- 关于AngularJs中的路由学习总结
AngularJs中的路由,应用比较广泛,主要是允许我们通过不同的url访问不同的内容,可实现多视图的单页web应用.下面看看具体怎么使用. 关于路由 通常我们的URL形式为http://jtjds ...
- AC日记——配对碱基链 openjudge 1.7 07
07:配对碱基链 总时间限制: 1000ms 内存限制: 65536kB 描述 脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成.而构成DNA的碱基共有4种,分别为腺瞟呤(A).鸟嘌 ...
- [No000026]365种创业、办公、和生活成长的精华资源
只需要具备以下技能,人人都可以成为企业家:经得起失败的考验,思维活跃,新点子不断,能够脚踏实地把新点子转化为产品,并在这个过程中坚持不懈,百折不挠,即使跌倒了,也要及时从失败中学习,迅速投入到下一次冒 ...
- [No000004]在WIN7/8任务栏创建快捷方式
在XP时代,有一个快速启动栏,创建快捷方式只需要把快捷方式放在“%AppData%\Roaming\Microsoft\Internet Explorer\Quick Launch”文件夹下即可,如果 ...
- 安装MySQLdb
MySQLdb模块不太好装,如果是在python2.7环境下,可以使用一种简易安装方式 root@iZ2893wjzgyZ:~# apt-get install python2.7-mysqldb 测 ...
- zookeeper多节点配置
单机多节点模式 zookeeper解压, 放到 /opt/zookeeper/ 下, 同目录再放一个 server1目录, 下面建data和log两个目录用于存放数据和日志 zoo.cfg [milt ...
- Tstringlist分割字符串的用法?
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaText 2.Delimiter &Delim ...
- CentOS下OpenVPN客户端配置
CentOS下OpenVPN客户端配置 http://liumissyou.blog.51cto.com/4828343/1762683 1,安装 yum install openvpn -y mkd ...