Spring对JPA提供的支持

来源:互联网 发布:java判断字符等于空格 编辑:程序博客网 时间:2024/05/18 02:14

JPA 本身可以工作,但是Spring呢 也对其提供了支持。

相对于JPA自己工作,Spring支持后代码量得到了简化,使得开发人员专注于关系自己的业务逻辑

首先将applicationContext.xml这个Spring的配置文件给贴上来,

内容是

<?xml version="1.0" encoding="UTF-8"?>
<!-- - DispatcherServlet application context for PetClinic's web tier. -->
<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:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


<context:component-scan base-package="org.test" />


<tx:annotation-driven transaction-manager="transactionManager" />




<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
</bean>


<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>


</beans>

在看我们的Student.java这个POJO

-------------------------------------------------------------------------------------------------------------------------------


package org.test.domain;


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


@Entity
@Table(name="student")
public class Student
{
private int id ;

private String name ;

public Student()
{

}

public Student(String name )
{
this.name = name ;
}


@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId()
{
return id;
}


public void setId(int id)
{
this.id = id;
}


public String getName()
{
return name;
}


public void setName(String name)
{
this.name = name;
}

}

对于JPA的核心配置文件persistence.xml 还是不能省略的

内容如下

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="JPATest" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>


        <class>org.test.domain.Student</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=""/>
<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>

-----------------------------------------------------------------------------------------------------------------------------------------------------------

先看Dao层的StudentDao.java

package org.test.dao;


import org.test.domain.Student;


public interface StudentDao
{
void store(Student student);
}


-----------------------------------------------------------------------------------------------------------------------------------------------------------

再看StudentDao的实现类 StudentDaoImpl.java

package org.test.dao;


import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;


import org.springframework.stereotype.Repository;
import org.test.domain.Student;


@Repository("studentDao")
public class StudentDaoImpl implements StudentDao
{


@PersistenceContext
private EntityManager em ;

public EntityManager getEm()
{
return em;
}
public void setEm(EntityManager em)
{
this.em = em;
}
@Override

@Transactional
public void store(Student student)
{
em.persist(student);
}


}

-----------------------------------------------------------------------------------------------------------------------------------------------------------

再看Service层的  StudentService.java的实现

package org.test.servie;


import org.test.domain.Student;


public interface StudentService
{
void storeService(Student student);
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------

接着是StudentServiceImpl.java的实现

package org.test.servie;


import javax.transaction.Transactional;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.test.dao.StudentDao;
import org.test.domain.Student;


@Service("studentService")
public class StudentServiceImpl implements StudentService
{


@Autowired
private StudentDao studentDao ;

@Transactional
@Override
public void storeService(Student student)
{
studentDao.store(student);
}

}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

最后在写一个测试类


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.test.domain.Student;
import org.test.servie.StudentService;


public class Main
{
public static void main(String[] args)
{
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

StudentService studentService = ac.getBean("studentService",StudentService.class);

studentService.storeService(new Student("sunwukong"));
}
}

0 0
原创粉丝点击