JPA整合Spring

来源:互联网 发布:北京北大软件上班 编辑:程序博客网 时间:2024/05/18 13:06

JPA实体类型

package springframework.jpa;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;@Entitypublic class User implements Serializable {private static final long serialVersionUID = 1L;private String id;private String name;private Integer age;@Column(nullable=true,length=50)public String getName() {return name;}public void setName(String name) {this.name = name;}@Column(nullable=true,length=20)public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public User() {}@Idpublic String getId() {return this.id;}public void setId(String id) {this.id = id;}public int hashCode() {return (this.id == null) ? 0 : this.id.hashCode();}public boolean equals(Object object) {if (object instanceof User) {final User obj = (User) object;return (this.id != null) ? this.id.equals(obj.id): (obj.id == null);}return false;}}

Dao接口

package springframework.jpa.dao;import java.io.Serializable;public interface DaoUtil {public <T extends Serializable> void saveObject(T obj);}
DAO实现类

package springframework.jpa.dao.impl;import java.io.Serializable;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;import springframework.jpa.dao.DaoUtil;@Repository("DaoUtil") public class DaoUtilImpl implements DaoUtil {@PersistenceContextprivate EntityManager em;@Transactional @Overridepublic <T extends Serializable> void saveObject(T obj) {em.persist(obj);}}

业务层接口

package springframework.jpa.service;import java.io.Serializable;public interface DaoService {public <T extends Serializable> T saveObject(Object[] paras);}

业务层实现类

package springframework.jpa.service.impl;import java.io.Serializable;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import springframework.jpa.User;import springframework.jpa.dao.DaoUtil;import springframework.jpa.service.DaoService;@Service("DaoService") public class UserServiceImpl implements DaoService {@Autowired private DaoUtil util;@Overridepublic <T extends Serializable> T saveObject(Object[] paras) {User user = new User();user.setAge((Integer)paras[0]);user.setId((String)paras[1]);user.setName((String)paras[2]);util.saveObject(user);return null;}}


<?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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsd"><context:component-scan base-package="springframework.jpa"/><tx:annotation-driven transaction-manager="transactionManager" /><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory" /></bean><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"/></beans>

JPA持久文件

<?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_2_0.xsd"version="2.0"><persistence-unit name="SimpleJpa" transaction-type="RESOURCE_LOCAL"><provider>org.hibernate.ejb.HibernatePersistence</provider><class>springframework.jpa.User</class><properties><property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /><property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test" /><property name="hibernate.connection.username" value="root" /><property name="hibernate.connection.password" value="111111" /><property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /><property name="hibernate.show_sql" value="true" /><property name="hibernate.format_sql" value="true" /><property name="hibernate.use_sql_comments" value="false" /><property name="hibernate.hbm2ddl.auto" value="update" /></properties></persistence-unit></persistence> 

测试

package springframework.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import springframework.jpa.User;import springframework.jpa.dao.DaoUtil; public class SimpleSpringJpaDemo {      public static void main(String[] args) {     ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");     DaoUtil userDao = ctx.getBean("DaoUtil", DaoUtil.class);     User user = new User();user.setAge(21);user.setId("767345-6273423-122");user.setName("Mary");    userDao.saveObject(user);     }  } 

用上Spring可以更好的分离Dao层,Service层,View层

0 0