2013-02-03
1.第一个JPA:JPA的配置文件的配置
a.新建web项目:JPATest
b.在src目录下新建META-INF文件夹
c.在META-INF文件夹下:新建
  persistence.xml
  <?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="credream" transaction-type="RESOURCE_LOCAL">
<!--name可以自定义写,<persistence-unit :持久化单元:一堆实体bean(的集合)单元的 集

合:transaction-type="JTA":
  以前学习的都是本地事物类型;全局事物:在一些应用场合只可以用全局事物
 使用全局事物的例子:比如mysql和oracle数据库之间转账; 
 mysql:update mysql set amount=amount-xx where id=xx(mysql)
 oracle:update mysql set amount=amount+xx where id=bb(oracle)
 要确保两个动作在同一个事物中执行;
 1.采用jdbc:
   connection=mysql
   connection.setAutoCommit(false);
    mysql:update mysql set amount=amount-xx where id=xx(mysql)
   oracle:update mysql set amount=amount+xx where id=bb(oracle)
    connection.commit();
      这个事物必须在一个connection中打开,才行,但是这里用了两中数据库:所以用一个

connection实现不了
      这时候要用全局事物;本地事物无法满足要求;
  2.这时候可以用JTA解决
    JTA.getUserTrantion().begin();
    connection->mysql
    connection2->oracle
     connection->update mysql set amount=amount-xx where id=xx(mysql)
    connection2-> oracle:update mysql set amount=amount+xx where id=bb(oracle)
  JTA.getUserTrantion().commit()
 如果任何一个出现问题就会回滚事物; 
  两次提交协议;预编译
  1.执行第一条sql,结果为成功的话返回true,否则是false,放到list中,这时候并不是真正

的执行commit,只是模拟下
  2.执行第二天sql,同样结果放到list中,如果两条语句,在list中的结果都为true的话,就执

行commit()提交
  3.两次提交是指,在执行每一条sql的时候会提交,然后最后有一个总的提

交.JTA.getUserTrantion().commit()
  一般在weblojc应用服务器中的时候,采用的全局事物
 90%的时候,我们是使用的本地事物;
  -->
<!--<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.hbm2dd1.auto" value="update"/>
//create-drop在应用启动的时候建立表,在应用关闭的 时候把表删除掉;
update指的是当数据库中没有这个表的时候会创建,有的时候如果有字段更新的话,会自动的

更新
<property name="hibernate.connection.driver_class"

value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="1234"/>
<property name="hibernate.connection.url"

value="jdbc:mysql://localhost:3306/testdb?

userUnicode=true&amp;characterEncoding=utf8"/>
</properties>
-->
  <properties>
  <property name="hibernate.dialect"

value="org.hibernate.dialect.MySQL5Dialect"/>
  <property name="hibernate.connection.driver_class"

value="org.gjt.mm.mysql.Driver"/>
  <property name="hibernate.connection.username" value="root"/>
  <property name="hibernate.connection.password" value="1234"/>
  <property name="hibernate.connection.url"

value="jdbc:mysql://localhost:3306/testdb?

useUnicode=true&amp;characterEncoding=UTF-8"/>
  <property name="hibernate.hbm2ddl.auto" value="update"/>
  </properties>
</persistence-unit>
</persistence>    
--------------------------------------------------------------------------
2.JPA的以第一实体bean: 
  在com.credream.bean包下建立:
  Person.java
  package com.credream.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Person {
private Integer id;
private String name;
//默认构造函数
public Person() {
// TODO Auto-generated constructor stub
}
//构造方法:用来创建该对象时候给那么赋值
public Person(String name) {
this.name=name;
 
}
@Id @GeneratedValue(strategy=GenerationType.AUTO)//auto是设置的默认值,可

以不设置:
//@GeneratedValue(strategy=GenerationType.AUTO),5.auto:根据方言智能判断;
//@Id  @GeneratedValue
/*采用数据库的id自增长的时候用的这个注解;提供了多种策略:
1.GenerationType.IDENTITY使用数据库id自增长方式,生成主键
2.TABLE:一张表:一个字段:附一个值,另一个记录id,每次增加都自增一下;
3.SEQUENCE:序列的方式
4.table效率不高,mysql,不可以用序列自增长,oracle不可以用自增长
5.auto:根据方言智能判断;
6.auto是设置的默认值,可以不设置:@GeneratedValue(strategy=GenerationType.AUTO)
*/
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}
-------------------------------------------------------------------------------
2.用junit来测试JPA:
  在junit.test包下:
  PersonTest.java
package junit.test;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.BeforeClass;
import org.junit.Test;

import com.credream.bean.Person;
public class PersonTest {
@BeforeClass
public static void setUpBeforeClass()throws Exception{
}
@Test
public void save(){
EntityManagerFactory factory=Persistence.createEntityManagerFactory

("credream");//这个字符串对应的是配置文件中的:<persistence-unit name="credream" 
//执行上面这条语句的时候可以反向生成表
//--->sessionFactory-->session--->begin事物
EntityManager em=factory.createEntityManager();
em.getTransaction().begin();//开始事物
    //Session.save()-->Persist();
em.persist(new Person("创梦网络")); //持久化到数据库.persist:持久化
em.getTransaction().commit();
em.close();
factory.close();

}
}
-----------------------------------------------
a.
log4j:WARN No appenders could be found for logger

(org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.//这时候出现了如下警告
b.查看数据库:
  已经生成了person表,并且:在表中插入了创梦网络的数据

JPA学习笔记---JPA实体Bean的建立+配置文件+junit测试+自动生成(对应实体Bean的)数据库表+插入数据相关推荐

  1. JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询

    JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPOL进行查询 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技 ...

  2. JPA学习笔记---JPA理解---第一个JPA程序

    1. a.JPA和Hibernate是sun提出的java持久化的规范.JPA是Hibernate,和TopLink,JDO等ORM框架 基础上发展而来的. b.和jdbc类似,比如刚刚没有jdbc的 ...

  3. JPA学习笔记---JPA实体Bean的建立---链接上一个博文:对实体Bean中属性进行操作:保存日期类型,设置字段的长度,名字,是否为空,可以声明枚举字段;可以存放二进制数据,可以存放

    3.给上述生成的那个name字段:更改数据库中的字段名,是否为空,字段长度的设定,只需要   在Person.java文件中,加上 @Column(length=10,nullable=false,n ...

  4. 利用Eclipse的JPA自动生成注解实体

    新公司用的SSH(springmvc)框架,看代码的时候,发现没有hbm.xml文件,全部使用的注解形式.在一次闲聊的时候问同事,这么多entity  写起来不麻烦么.同事说根据数据库自动生成的.于是 ...

  5. 小d课堂mysql_小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...

    笔记 6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类 简介:实战使用IDE根据Mysql自动生成java pojo实体类 1.IDEA连接数据库 菜单View→Tool Window ...

  6. SAP HANA Cloud 学习教程之二: 如何往SAP BTP 上 HANA Cloud 实例的数据库表里插入数据

    这个教程的前一篇文章,SAP HANA Cloud 学习教程之一: 如何在 SAP BTP 上创建 SAP HANA Cloud 实例,我们已经成功在 SAP BTP HANA Cloud Servi ...

  7. JPA学习笔记2——JPA高级

    2019独角兽企业重金招聘Python工程师标准>>> 1.JPA的实体生命周期: JPA的实体有以下4中生命周期状态: (1).New:瞬时对象,尚未有id,还未和Persiste ...

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

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

  9. JPA学习笔记二——Hello World

    使用JPA持久化对象的步骤 创建persistence.xml,在这个文件中配置持久化单元 - 需要指定跟哪个数据库进行交互 - 需要指定JPA使用哪个持久化的框架以及配置该框架的基本属性 创建实体类 ...

最新文章

  1. pytorch nlp 语音识别任务如何进行数据加载
  2. sprintf_s的使用
  3. 巧妙解法:买卖股票最佳时机
  4. QListWidget读取本地文件夹中文件并显示名字,双击读取xml数据
  5. Idea批量修改变量名
  6. SVG.js 基础图形绘制整理(二)
  7. 【图像处理】——图像灰度直方图的绘制(直接调用函数和自定义函数)
  8. 在spring boot中三分钟上手apache顶级分布式链路追踪系统skywalking
  9. 在windows上搭建redis集群(Redis-Sentinel)
  10. android java.rmi不存在_ANDROID_HOME'环境变量设置为不存在的路径Jenkins
  11. 为什么要使用Redis?
  12. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]
  13. DMG Canvas for mac(DMG打包工具)
  14. 晶体管制程极限之后,多层CPU是否可能?
  15. 二建公路工程知识总结_2020二建公路实务:专题突破+高分攻略,拿分90稳过二建...
  16. set,env,export,set -x,set -e;
  17. cognos oracle sql,Cognos联接Oracle数据库
  18. 【JanusGraph入门】(第一天,下载项目)
  19. java继承求三角形圆形面积_java求三角形面积
  20. NodeRed基础1--循环结构

热门文章

  1. Computational Learning Theory - VC Dimension
  2. Tensor:逐元素操作
  3. pytorch教程之nn.Module类详解——使用Module类来自定义网络层
  4. VC socket 发送类对象
  5. 作为搭建网站的程序员,你有Apsara Clouder云计算专项技能认证吗?
  6. 《Spring 3.0就这么简单》——1.5 业务层
  7. Linux集群和自动化维1.3 如何根据服务器应用选购服务器
  8. [转]easyui 全部图标
  9. Android开发,你应该知道的
  10. Linux Bash Shell中的特殊参数含义