`
jiagou
  • 浏览: 2595297 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
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表,并且:在表中插入了创梦网络的数据
分享到:
评论

相关推荐

    基于Springboot的学生读书笔记共享系统源码数据库.zip

    - 学生读书笔记共享系统可能包含多个数据库表,如用户表(存储学生信息)、笔记表(存储读书笔记内容)、分类表(用于分类笔记)、评论表(用户对笔记的评价)等。这些表之间可能存在一对多、多对多等关系,需要...

    springboot学习思维笔记.rar

    - **自动配置**:SpringBoot的一大特色就是自动配置,它通过`@EnableAutoConfiguration`注解,根据项目依赖自动配置Bean。 - **起步依赖**:SpringBoot通过“起步依赖”(Starter POMs)来简化Maven或Gradle的配置...

    JavaEE学习笔记

    JavaEE学习笔记是Java开发领域中的重要资源,它包含了丰富的技术知识和实践经验,旨在帮助初学者和有经验的开发者深入理解Java企业级应用的开发。JavaEE(Java Platform, Enterprise Edition)是Oracle公司主导的...

    SpringBoot-Study--master.zip

    3. **自动配置(Auto Configuration)**:SpringBoot会根据项目中的依赖自动配置相关的Bean,例如,当项目中有spring-boot-starter-data-jpa依赖时,SpringBoot会自动配置JPA的相关设置。 4. **Actuator**:提供了...

    ejb培训笔记和源代码

    4. **实体bean**:讨论实体bean的生命周期,包括容器管理的持久性(CMP)和bean管理的持久性(BMP),以及JPA(Java Persistence API)在处理实体bean中的作用。 5. **消息驱动bean**:解释MDB如何通过JMS(Java ...

    Spring学习笔记

    这份“Spring学习笔记”涵盖了Spring框架的核心概念和技术,旨在帮助初学者和经验丰富的开发者深入理解并掌握Spring。以下是对笔记内容的详细概述: 一、Spring框架概述 Spring是一个开源的企业级Java应用框架,它...

    springboot-web.rar

    10. **数据访问**:SpringBoot支持多种数据库,如JDBC,Hibernate,MyBatis等,并且提供了数据源自动配置和JPA(Java Persistence API)的集成。 11. **测试**:内置了JUnit和Mockito支持,方便进行单元测试和集成...

    j2ee开发全程的实录

    包括会话Bean(Session Beans,处理客户端请求)和实体Bean(Entity Beans,代表数据库中的持久化对象)。 - **JMS**:对于异步通信,JMS允许应用程序通过消息队列进行通信,提高系统的可扩展性和解耦性。 - **JPA...

    Spring笔记示例源代码

    "Spring笔记示例源代码"这个资源很可能是为了帮助学习者深入理解Spring框架的各种功能和用法而提供的实际代码示例。 1. **Spring IoC**:IoC是Spring的核心特性,它将对象的创建和管理权交给Spring容器,使得开发者...

    Javaframework框架笔记

    1. Spring Core:包括Bean工厂和应用上下文,是Spring的基础,负责对象的创建、配置和管理。 2. AOP:允许开发者定义横切关注点,如日志、事务管理,与业务逻辑分离。 3. Spring MVC:用于构建Web应用,提供模型-...

    \Desktop\Spring Boot.7z

    1. **自动配置**:基于`@EnableAutoConfiguration`注解,Spring Boot会根据项目依赖自动配置相应的bean,省去了大量XML配置。 2. **内嵌式容器**:支持Tomcat、Jetty等内嵌式Web服务器,无需额外安装,简化部署。 3....

    学习JavaEE的day26

    10. **持续集成与自动化测试**:如使用Maven或Gradle进行构建管理,JUnit进行单元测试,Selenium进行Web应用的自动化测试等。 通过对这些知识点的学习和实践,你将能够掌握JavaEE的核心概念和技术,从而有能力构建...

    javaEE培训教案(国内某一IT培训机构2个月的培训内容)

    学员将学习实体类、映射文件、查询语言(JPQL)以及事务处理。 8. **JSF(JavaServer Faces)**:一种用于构建用户界面的JavaEE组件框架,学员会接触UI组件、事件处理和数据绑定。 9. **Spring框架**:作为JavaEE...

    NIIT J2EE考试

    10. **测试和部署**:JUnit用于单元测试,而持续集成工具如Jenkins可以帮助自动化构建和部署流程,确保代码的质量和稳定性。 在"niit第四学期考试"中,学员可能需要对以上知识点有深入的理解,并能够解决实际问题,...

    springmvc课堂笔记(两天)

    8. **单元测试和集成测试**:使用JUnit、Mockito等工具对SpringMVC应用进行测试的方法。 9. **SpringMVC与其他Spring模块的集成**:例如与Spring Security、Spring Data JPA等的协同工作。 10. **最佳实践和案例...

    2021-02-otus-spring-Absayduleva

    5. **Spring Data访问**:了解如何整合Spring与数据库,包括JDBC、JPA、Hibernate等,以及Repository模式。 6. **Spring Boot**:学习Spring Boot的自动化配置、起步依赖和内置服务器,简化项目设置。 7. **Spring...

    孙哥说Spring5代码.zip

    10. **单元测试和集成测试**:Spring5提供了JUnit5和Mockito等测试工具的集成,使得编写单元测试和集成测试变得更加方便。 通过学习和实践《孙哥说Spring5代码》中的示例,开发者能够掌握Spring5的主要功能,提高...

    mySpring:跟着鲁班学院-周瑜老师视频做的简单Spring原始项目

    5. **数据库集成**:可能涉及到Spring Data JPA或MyBatis等库,用于数据库操作,学习如何进行数据访问和事务管理。 6. **单元测试和集成测试**:Spring支持JUnit和Mockito等测试工具,通过编写测试来验证代码的正确...

Global site tag (gtag.js) - Google Analytics