您的位置:首页 > 编程语言 > Java开发

jpa学习2---jpa和spring结合使用半注解方式

2017-03-05 19:19 676 查看
jpa学习2---jpa和spring结合使用半注解方式
1.工程结构图:



2.新建java工程-----导入jar包
建立实体类:使用注解
package com.zl.sjpa.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")
@Entity
public class Person {

private Integer id;
private String lastName;

private String email;
private int age;

@GeneratedValue
@Id
public 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;
}
}
3.service层
package com.zl.sjpa.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zl.sjpa.dao.PersonDao;
import com.zl.sjpa.spring.entities.Person;

@Service
public class PersonService {

@Autowired
private PersonDao personDao;

@Transactional
public void savePersons(Person p1, Person p2){
personDao.save(p1);

//		int i = 10 / 0;

personDao.save(p2);
}

}
4.dao层:
package com.zl.sjpa.dao;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;

import com.zl.sjpa.spring.entities.Person;

@Repository
public class PersonDao {

//如何获取到和当前事务关联的 EntityManager 对象呢 ?
//通过 @PersistenceContext 注解来标记成员变量!
@PersistenceContext
private EntityManager entityManager;

public void save(Person person){
entityManager.persist(person);
}

}
5.db.properties数据库参数
jdbc.user=root
jdbc.password=tiger
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc\:mysql\:///spring
6.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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 
<!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.zl.sjpa"></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.zl.sjpa.spring.entities"></property>
<!-- 配置 JPA 的基本属性. 例如 JPA 实现产品的属性 -->
<property name="jpaProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<
b9dc
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐