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. 第八篇 elasticsearch链接mysql自动更新数据库

    增量更新 input { jdbc { jdbc_driver_library => "D:\tools\mysql\mysql-connector-java-5.1.45/mysql ...

  2. centos7命令行和图形界面的相互切换(附centos7安装配置教程)

    一.最近安装了centos7,发现在命令行和图形界面的相互切换命令上,与centos以往版本有很大不同,先整理如下,加深记忆. 1,centos7默认安装后,跟其他版本一样,启动默认进入图形界面: 2 ...

  3. webAPI路由的使用

    根据WEBAPI的路由规则,在实际项目当中有二种用法, 一:webAPI.Config里面为 config.MapHttpAttributeRoutes(); config.Routes.MapHtt ...

  4. The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object

    The project was not built since its build path is incomplete. Cannot find the class file for java.la ...

  5. hdu1058

    #include<iostream> #include<string> using namespace std; int const N = 4; int map[N] = { ...

  6. 释放License命令

    lmutil_x86.exe lmremove -c 1055@Vappcloud-WinS acfd Administrator VappCloud_Win7a.vancloud-corp.com ...

  7. PAT L2-014【二分】

    思路: 最后发现对当前列车比我大的编号的栈有没有就好了,所以开个vector存一下,然后二分一下vector找一下第一个比我大的数就好了 #include <bits/stdc++.h> ...

  8. PHP-CGI远程任意代码执行漏洞(CVE-2012-1823)修复方案

    首先介绍一下这个漏洞,其实是在apache调用php解释器解释.php文件时,会将url参数传我给php解释器,如果在url后加传命令行开关(例如-s.-d .-c或  -dauto_prepend_ ...

  9. MD5-UTF8-大写加密

    private string GetMD5Hash(string str) { string md5Str = ""; byte[] buffer = Encoding.UTF8. ...

  10. 1093 Count PAT's(25 分)

    The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...