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 ...
随机推荐
- MMORPG大型游戏设计与开发(概述)updated
1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...
- WinCE项目应用之RM905a+活度计远程检定方法研究
前文<RM905a+医用放射性核素活度计>中已经提到,基于WinCE5.0系统的RM905a+可以很方便的实现远程界面显示和控制.所以远程检定的主要工作在于服务器端的业务部分.基于< ...
- ApplicationWindow
本文介绍了一个使用ApplicationWindow 和Action 实现的一个文本编辑器.界面美观,基本功能齐全.代码齐全. 首先看 MainWindow.java. //MainWindow.ja ...
- 转: Eclipse自动提示功能
Eclipse的一个重要功能 2011-07-29 10:20:37 标签:java eclipse editor 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信 ...
- NSDate 哪些事
.什么是时间戳? 时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)至当前时间的总秒数. 2.NSDate,时间戳,NSString 之间的转换 //string 转 date + ...
- 关于maya动力学系统的一些总结
maya动力学有以下几套系统: 1.刚体.柔体系统 刚体系统的典型节点连接方法如下: 物体的变换节点.形状节点连接rigidBody节点,刚体节点输出力到解算器节点,解算器输出新的变换到变换节点 值得 ...
- Activity 与 Service 之间的消息传递
BgService代码 public class BgService extends Service { public static final String TAG = "BgServic ...
- python学习之用正则处理log(持续更新,ftace)
1. ftrace的输出如下图所示: [003] 48375.494595: clear_buddies <-pick_next_entity m=re.match("^\[([0-9 ...
- Javascript Math.ceil()与Math.round()与Math.floor()区别
Math.ceil()向上舍入 1 2 3 alert(Math.ceil(20.1)) //输出 21 alert(Math.ceil(20.5)) //输出 21 alert(Math.ceil( ...
- html之marquee详解
该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果该标签是个容器标签语法: <marquee ...