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应用实例的更多相关文章

  1. Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案

    最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https: ...

  2. Spring Boot + Jpa(Hibernate) 架构基本配置

    本文转载自:https://blog.csdn.net/javahighness/article/details/53055149 1.基于springboot-1.4.0.RELEASE版本测试 2 ...

  3. SpringBoot + Jpa(Hibernate) 架构基本配置

    1.基于springboot-1.4.0.RELEASE版本测试 2.springBoot + Hibernate + Druid + Mysql + servlet(jsp) 一.maven的pom ...

  4. 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 ...

  5. 持久化框架Hibernate 开发实例(一)

    1 Hibernate简介 Hibernate框架是一个非常流行的持久化框架,其中在web开发中占据了非常重要的地位, Hibernate作为Web应用的底层,实现了对数据库操作的封装.HIberna ...

  6. Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题

      (转载)Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题   这几天在用spring boot开发项目, 在开发的过程中遇到一个问题hibernate在执 ...

  7. Spring4.x Jpa + hibernate的配置(废弃JpaTemplate)

    近年来 ORM(Object-Relational Mapping,对象关系映射,即实体对象和数据库表的映射)技术市场热闹非凡,各种各样的持久化框架应运而生,其中影响最大的是 Hibernate 和 ...

  8. springboot 集成 jpa/hibernate

    pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  9. 五、spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate

    1.pom添加依赖 <!-- spring data jpa,会注入tomcat jdbc pool/hibernate等 --> <dependency> <group ...

随机推荐

  1. shell tips

    1.shopt 命令可以设置shell的可选参数 shopt [-psu] [optname...] -s 开启某个选项 -u 关闭某个选项 -p 列出所有可设置的选项 其中开启extglob选项,s ...

  2. namesilo域名注册教程

    一.注册账号 打开http://www.namesilo.com ,我们先去注册一个Namesilo帐号,然后再在Namesilo注册域名!如图: 接下来,就是填写一些简单资料,如图: 然后Names ...

  3. Flappy Bird (Java实现)

    运行效果: 代码: package bird; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; im ...

  4. JSP中九大内置对象及其数据类型

    JSP中九大内置对象为: request              请求对象               类型 javax.servlet.ServletRequest         作用域 Req ...

  5. uva11025 The broken pedometer

    6741870 ksq2013 UVA 11205 Accepted   60 C++11 5.3.0 1002 2016-08-04 14:25:22 题目大意如下:给定n个LED灯串,每个灯串由p ...

  6. Java中正则Matcher类的matches()、lookAt()和find()的区别

    在Matcher类中有matches.lookingAt和find都是匹配目标的方法,但容易混淆,整理它们的区别如下: matches:整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回 ...

  7. 关于button和form提交的一些问题

    1.form 中type 为submit 和button的区别 submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理( ...

  8. iOS 关于版本升级问题的解决

    从iOS8系统开始,用户可以在设置里面设置在WiFi环境下,自动更新安装的App.此功能大大方便了用户,但是一些用户没有开启此项功能,因此还是需要在程序里面提示用户的. 虽然现在苹果审核不能看到版本提 ...

  9. win2008server R2 x64 部署.net core到IIS上出现【Failed to load the dll from [C:\Program Files\dotnet\host\fxr\1.0.1\hostfxr.dll], HRESULT: 0x80070057】错误

    win2008server R2 x64 部署.net core到IIS上出现[Failed to load the dll from [C:\Program Files\dotnet\host\fx ...

  10. O(1) 查询gcd

    我们来安利一个黑科技.(其实是Claris安利来的 比如我现在有一坨询问,每次询问两个不超过n的数的gcd. n大概1kw,询问大概300w(怎么输入就不是我的事了,大不了交互库 http://mim ...