1.环境搭建,注意包结构的问题,src下建立名为META-INF的文件夹,放persistence.xml,位置放错,读不到会报错.

  1     <?xml version="1.0" encoding="UTF-8"?>
2 <persistence xmlns="http://java.sun.com/xml/ns/persistence"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
5 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
6 version="2.0">
7
8 <!--配置持久化单元 -->
9 <persistence-unit name="unit" transaction-type="RESOURCE_LOCAL">
10 <!--配置jpa持久化类提供者 -->
11 <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
12 <!--配置数据库 Hibernate基本信息 -->
13 <properties>
14 <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
15 <property name="hibernate.connection.url" value="jdbc:mysql:///day581"/>
16 <property name="hibernate.connection.username" value="root"/>
17 <property name="hibernate.connection.password" value="root"/>
18 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
19 <property name="hibernate.hbm2ddl.auto" value="update"/>
20 <property name="hibernate.show_sql" value="true"/>
21 <property name="hibernate.format_sql" value="true"/>
22 <property name="hibernate.connection.isolation" value="4"/>
23 <!-- c3p0连接池 -->
24 <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"/>
25 </properties>
26 </persistence-unit>
27 </persistence>

2.实体类编写

  1 package huguangqin.com.cnblogs.entity;
2 import java.io.Serializable;
3 import javax.persistence.Column;
4 import javax.persistence.Entity;
5 import javax.persistence.GeneratedValue;
6 import javax.persistence.GenerationType;
7 import javax.persistence.Id;
8 import javax.persistence.Table;
9
10 @Entity
11 @Table(name = "cst_customer")
12 public class Customer implements Serializable {
13 private static final long serialVersionUID = 1L;
14
15 @Id
16 @GeneratedValue(strategy = GenerationType.IDENTITY)
17 @Column(name = "cust_id")
18 private Long custId;
19
20 @Column(name = "cust_name")
21 private String custName;
22
23 @Column(name = "cust_source")
24 private String custSource;
25
26 @Column(name = "cust_industry")
27 private String custIndustry;
28
29 @Column(name = "cust_level")
30 private String custLevel;
31
32 @Column(name = "cust_address")
33 private String custAddress;
34
35 @Column(name = "cust_phone")
36 private String custPhone;
37
38 public Long getCustId() {
39 return custId;
40 }
41
42 public void setCustId(Long custId) {
43 this.custId = custId;
44 }
45
46 public String getCustName() {
47 return custName;
48 }
49
50 public void setCustName(String custName) {
51 this.custName = custName;
52 }
53
54 public String getCustSource() {
55 return custSource;
56 }
57
58 public void setCustSource(String custSource) {
59 this.custSource = custSource;
60 }
61
62 public String getCustIndustry() {
63 return custIndustry;
64 }
65
66 public void setCustIndustry(String custIndustry) {
67 this.custIndustry = custIndustry;
68 }
69
70 public String getCustLevel() {
71 return custLevel;
72 }
73
74 public void setCustLevel(String custLevel) {
75 this.custLevel = custLevel;
76 }
77
78 public String getCustAddress() {
79 return custAddress;
80 }
81
82 public void setCustAddress(String custAddress) {
83 this.custAddress = custAddress;
84 }
85
86 public String getCustPhone() {
87 return custPhone;
88 }
89
90 public void setCustPhone(String custPhone) {
91 this.custPhone = custPhone;
92 }
93
94 // toString
95 @Override
96 public String toString() {
97 return "Customer [custId=" + custId + ", custName=" + custName + ", custSource=" + custSource
98 + ", custIndustry=" + custIndustry + ", custLevel=" + custLevel + ", custAddress=" + custAddress
99 + ", custPhone=" + custPhone + "]";
100 }
101
102 }
103

3.工具类-JPAUtil,用于启动创建一次EntityManagerFactory,并获取EntityManager
   

  1  package huguangqin.com.cnblogs.util;
2 import javax.persistence.EntityManager;
3 import javax.persistence.EntityManagerFactory;
4 import javax.persistence.Persistence;
5
6 public class JPAUtil {
7 private static EntityManagerFactory factory;
8
9 static {
10 factory = Persistence.createEntityManagerFactory("unit");
11 }
12
13 public static EntityManager getEntityManager() {
14 return factory.createEntityManager();
15 }
16 }
17

4.测试代码

  1 package huguangqin.com.cnblogs.demo;
2
3 import javax.persistence.EntityManager;
4 import javax.persistence.EntityTransaction;
5
6 import org.junit.Test;
7
8 import huguangqin.com.cnblogs.entity.Customer;
9 import huguangqin.com.cnblogs.util.JPAUtil;
10
11 /**
12 * 保存一个数据到客户表中:persist
13 */
14 public class JPATest1 {
15 @Test
16 public void addTest() {
17 // 获取EntityManager
18 EntityManager em = JPAUtil.getEntityManager();
19 // 得到事务对象
20 EntityTransaction et = em.getTransaction();
21 // 开启事务
22 et.begin();
23 // CRUD
24 Customer cust = new Customer();
25 cust.setCustName("阿里");
26 // 持久化
27 em.persist(cust);
28 // 提交事务
29 et.commit();
30 // 关闭资源
31 em.close();
32 }
33
34 /**
35 * 根据id查询:find
36 */
37 @Test
38 public void findTest() {
39 // 获取EntityManager
40 EntityManager em = JPAUtil.getEntityManager();
41 // 得到事务对象
42 EntityTransaction et = em.getTransaction();
43 // 开启事务
44 et.begin();
45 // 根据ID查询
46 Customer customer = em.find(Customer.class, 1L);
47 System.out.println(customer);
48
49 // 提交事务
50 et.commit();
51 // 关闭资源
52 em.close();
53 }
54
55 /**
56 * 延迟加载测试(getReference),用到的时候才发送sql
57 */
58 @Test
59 public void delayTest() {
60 // 获取EntityManager
61 EntityManager em = JPAUtil.getEntityManager();
62 // 获取事务对象
63 EntityTransaction et = em.getTransaction();
64 // 开启事务
65 et.begin();
66 // 延迟加载
67 Customer cust = em.getReference(Customer.class, 1L);
68 System.out.println(cust);
69 // 提交事务
70 et.commit();
71 // 关闭资源
72 em.close();
73 }
74
75 /**
76 * 修改:查询-修改(setter)
77 */
78 @Test
79 public void updateTest() {
80 // 获取EntityManager
81 EntityManager em = JPAUtil.getEntityManager();
82 // 获取事务对象
83 EntityTransaction et = em.getTransaction();
84 // 开启事务
85 et.begin();
86 // 修改
87 Customer cust = em.find(Customer.class, 1L);
88 cust.setCustName("Tecent");
89
90 // 提交事务
91 et.commit();
92 // 关闭资源
93 em.close();
94 }
95
96 /**
97 *删除 remove
98 */
99 @Test
100 public void delTest() {
101 // 获取EntityManager
102 EntityManager em = JPAUtil.getEntityManager();
103 // 获取事务对象
104 EntityTransaction et = em.getTransaction();
105 // 开启事务
106 et.begin();
107 // 删除
108 Customer cust = em.find(Customer.class, 1L);
109 em.remove(cust);
110 // 提交事务
111 et.commit();
112 // 关闭资源
113 em.close();
114 }
115 }
116

Hibernate笔记7--JPA CRUD的更多相关文章

  1. 框架Hibernate笔记系列 基础Session

    标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...

  2. Hibernate注解与JPA

    Hibernate注解与JPA - charming的专栏 - CSDN博客http://blog.csdn.net/zxc123e/article/details/51499652 之前记录的一些东 ...

  3. Hibernate笔记一

    背景 jdbc的优缺点 A:直接操作底层,提供了简单,便捷的访问数据库方法,跨平台比较强,灵活,可以写很多赋值的SQL语句:是最底层的数据库操作,所以效率比较高,Sql语句可以自己选择写,采用效率最高 ...

  4. hibernate笔记--cascade级联以及inverse属性

    cascade : 不管是单向多对一还是一对多,或者是双向的一对多关系,在一的一端映射文件中有一个set标签,在多的一端有many-to-one标签,拿前几篇笔记里讲的Grade和Student举例, ...

  5. JPA学习笔记1——JPA基础

    1.JPA简介: Java持久化规范,是从EJB2.x以前的实体Bean(Entity bean)分离出来的,EJB3以后不再有实体bean,而是将实体bean放到JPA中实现.JPA是sun提出的一 ...

  6. Hibernate笔记——Hibernate介绍和初次环境配置

    Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate ...

  7. 【hibernate】spring+ jpa + hibername 配置过程遇到的问题

    org.springframework.data.jpa.domain.support.AuditingEntityListener Auditing: 审计:查账Hades:Hades是一个开源库, ...

  8. hibernate笔记加强版

    hibernate 一. hibernate介绍 hibernate事实上就是ormapping框架,此框架的作用就是简单话数据库的操作. hibernate就是将用户提交的代码.參照持久化类配置文件 ...

  9. 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN

    声明: 1.本文系原创,非抄袭或转载过来的. 2.本文论点都亲手做过实验论证. 3.本文所讲的Hibernate配置都基于注解的方式,hbm语法未提供. 非常多人对持久层概念搞不清JPA.Hibern ...

随机推荐

  1. jQuery菜单,导航与标签页

    一:导航 网站导航栏是网站导航的第一层导航结构,我们可以使用HTML和jQuery来创建类似flash的动画效果 一:下拉式菜单  法一: <!DOCTYPE html PUBLIC " ...

  2. Hive 查询优化总结

    一.join优化 Join查找操作的基本原则:应该将条目少的表/子查询放在 Join 操作符的左边.原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存, ...

  3. 6、R语言绘制带errorbar 的柱状图

    转载:http://www.cnblogs.com/xudongliang/p/7283733.html data <- data.frame(mean = c(10, 15), sd = c( ...

  4. NIO和Reactor

    本文参考Doug Lea的Scalable IO in Java. 网络服务 随着网络服务的越来越多,我们对网络服务的性能有了更高的要求,提供一个高性能,稳定的web服务是一件很麻烦的事情,所以有了n ...

  5. linux下sed批量替换文件内容

    在linux超级终端下编辑文档是件比较麻烦的事情,下面简单介绍一下如何在linux下批量替换文件内容 linuxsed 批量替换多个文件中的字符串 格式: sed -i "s/查找字段/替换 ...

  6. VS Code(待补充)

    使用! 然后Tab  快速生成html文档结构 快速生成一个类   .类名  会有提示 .container.box .col-6*2 VisualStudio Code怎么同时编辑多处?

  7. webpack@3.6.0(1) -- 快速开始

    本篇内容 前言 配置入口和输出 热更新 loader配置 js代码压缩 html的打包与发布 前言 //全局安装 npm install -g webpack(3.6.0) npm init //安装 ...

  8. MySQL的CURRENT_DATE(),NOW(),DATE_FORMAT()函数的应用,类型转换及操作汇总

    内容简介 datetime类型和timestamp类型的取值范围,CURRENT_DATE()函数应用,NOW()函数应用,DATE_FROMAT()函数取星期,日期.字符串.时间戳相互转换等. 时间 ...

  9. SQL——模糊查询

    前言 在这个大数据时代,我们都离不开对数据的增删改查,增加.删除.修改这些看似都是一步完成的事情,但是对于查询来说,好的查询SQL可以大大的减少系统内存运行时间,提高系统的反应速度.这里简单的介绍一下 ...

  10. cf835(预处理 + 记忆化dp)

    题目链接: http://codeforces.com/contest/835/problem/D 题意: 定义 k 度回文串为左半部分和右半部分为 k - 1 度的回文串 . 给出一个字符串 s, ...