JPA学习笔记(四)
来源:互联网 发布:淘宝上哪家笛子好 编辑:程序博客网 时间:2024/05/15 13:28
JPA整合Spring
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"><!-- 配置自动扫描的包 --><context:component-scan base-package="com.atguigu.jpa"></context:component-scan><!-- 配置 C3P0 数据源 --><context:property-placeholder location="classpath:db.properties"/><bean id="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="user" value="${jdbc.user}"></property><property name="password" value="${jdbc.password}"></property><property name="driverClass" value="${jdbc.driverClass}"></property><property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property><!-- 配置其他属性 --></bean><!-- 配置 EntityManagerFactory --><bean id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource"></property><!-- 配置 JPA 提供商的适配器. 可以通过内部 bean 的方式来配置 --><property name="jpaVendorAdapter"><bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean></property><!-- 配置实体类所在的包 --><property name="packagesToScan" value="com.atguigu.jpa.spring.entities"></property><!-- 配置 JPA 的基本属性. 例如 JPA 实现产品的属性 --><property name="jpaProperties"><props><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property></bean><!-- 配置 JPA 使用的事务管理器 --><bean id="transactionManager"class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory"></property></bean><!-- 配置支持基于注解是事务配置 --><tx:annotation-driven transaction-manager="transactionManager"/></beans>
Person.java
package com.atguigu.jpa.spring.entities;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Table(name="JPA_PERSONS")@Entitypublic class Person {private Integer id;private String lastName;private String email;private int age;@GeneratedValue@Idpublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}@Column(name="LAST_NAME")public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
PersonDao.java
package com.atguigu.jpa.dao;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import org.springframework.stereotype.Repository;import com.atguigu.jpa.spring.entities.Person;@Repositorypublic class PersonDao {//如何获取到和当前事务关联的 EntityManager 对象呢 ?//通过 @PersistenceContext 注解来标记成员变量!@PersistenceContextprivate EntityManager entityManager;public void save(Person person){entityManager.persist(person);}}
PersonService.java
package com.atguigu.jpa.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.atguigu.jpa.dao.PersonDao;import com.atguigu.jpa.spring.entities.Person;@Servicepublic class PersonService {@Autowiredprivate PersonDao personDao;@Transactionalpublic void savePersons(Person p1, Person p2){personDao.save(p1);int i = 10 / 0;personDao.save(p2);}}
JPATest.java
package com.atguigu.jpa.spring;import java.sql.SQLException;import javax.sql.DataSource;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.atguigu.jpa.service.PersonService;import com.atguigu.jpa.spring.entities.Person;public class JPATest {private ApplicationContext ctx = null;private PersonService personService = null;{ctx = new ClassPathXmlApplicationContext("applicationContext.xml");personService = ctx.getBean(PersonService.class);}@Testpublic void testPersonService(){Person p1 = new Person();p1.setAge(11);p1.setEmail("aa@163.com");p1.setLastName("AA");Person p2 = new Person();p2.setAge(12);p2.setEmail("bb@163.com");p2.setLastName("BB");System.out.println(personService.getClass().getName());personService.savePersons(p1, p2);}@Testpublic void testDataSource() throws SQLException {DataSource dataSource = ctx.getBean(DataSource.class);System.out.println(dataSource.getConnection());}}
0 0
- JPA学习笔记(四)
- JPA学习笔记【四】【api】
- JPA学习(四)
- Spring Data Jpa开发学习笔记(四)
- JPA学习笔记(转)
- JPA学习笔记(一)
- JPA学习笔记(一)
- JPA学习笔记(二)
- JPA学习笔记(三)
- JPA学习笔记-JPA基础
- JPA学习笔记-JPA进阶
- JPA学习笔记(1)——什么是JPA
- JPA学习笔记(2)——创建JPA项目
- JPA学习笔记(3)——JPA注解
- JPA学习笔记(1)——什么是JPA
- JPA学习笔记(2)——创建JPA项目
- JPA学习笔记(3)——JPA注解
- JPA学习笔记(1)——什么是JPA
- ext文件系统结构
- ubuntu14.04安装pycharm用于python开发
- 阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用
- java.sql.SQLException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
- 配置使用阿里云 Maven 库
- JPA学习笔记(四)
- Python-第三方库requests详解
- centos6.7静态ip设置---2
- java基础之多线程的安全问题、同步
- Web环境中Spring的启动过程
- PC 串口通信
- Jetty入门之 HelloWorld
- iOS中GCD的使用小结
- 80% 应聘者都不及格的 JS 面试题