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. Spring IOC 巨多 非常 有用

    关联文章: 关于Spring IOC (DI-依赖注入)你需要知道的一切 关于 Spring AOP (AspectJ) 你该知晓的一切 <Spring入门经典>这本书无论对于初学者或者有 ...

  2. 使用python已知平均数求随机数

    问题描述:产生40个数,范围是363-429之间,平均值为402 思路: 1 产生一个随机数 2 使用平均数减去随机数求出第二个数,生成20组 3 将排序打乱 # -*- coding: cp936 ...

  3. 3. XML实体注入漏洞的利用与学习

    XML实体注入漏洞的利用与学习 前言 XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数据进行处理时引发 ...

  4. Codeforces - 77B - Falling Anvils - 几何概型

    https://codeforc.es/contest/77/problem/B 用求根公式得到: \(p-4q\geq0\) 换成熟悉的元: \(y-4x\geq0\) 其中: \(x:[-b,b] ...

  5. HTML 表单 / HTML5 表单元素datalist

    <form> 属性的列表: 属性 描述 accept-charset 规定在被提交表单中使用的字符集(默认:页面字符集). action 规定向何处提交表单的地址(URL)(提交页面). ...

  6. 51nod1428(优先队列)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 题意:中文题诶- 思路:贪心 问最少要多少教室就是求最多 ...

  7. bzoj1010 玩具装箱

    玩具装箱 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...

  8. Taran 缩点【bzoj1529】[POI2005]ska Piggy banks

    [bzoj1529][POI2005]ska Piggy banks Description Byteazar 有 N 个小猪存钱罐. 每个存钱罐只能用钥匙打开或者砸开. Byteazar 已经把每个 ...

  9. print和sys.stdout

    print print语句执行的操作是一个写操作,把我们从外设输入的数据写到了stdout流,并进行了一些特定的格式化.和文件方法不同,在执行打印操作是,不需要将对象转换为字符串(print已经帮我们 ...

  10. gitlab web客户端的使用

    3.2.1 新建项目 3.2.2 初始化项目(git init) 正如上图显示的,gitlab会给我们相应的命令供我们使用(需要安装客户端).初始化一个项目可以是一个新建的空项目,也可以是一个已经存在 ...