jdbc-jpa

来源:互联网 发布:高频交易程序员 编辑:程序博客网 时间:2024/06/05 19:24


    创建Maven项目:添加依赖!依赖可以到maven repository官网那个里面去寻找所需要的依赖。
   
 首先探讨下传统的JDBC连接数据库。
   1.开发JDBCUTILS(JDBC工具类,就是为了省去重复的代码,获取Connection,Statament,ResultSet)


                String user="root";
String url="jdbc:mysql:///dbGirl";
String password="1234";
String driverClass="com.mysql.jdbc.Driver";
这些配合文件我们不应该写在具体的代码中去,因为这样很繁琐!修改难度大。
InputStream inputStream=jdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
通过类加载可以读取配置文件中的内容。然后通过Properties来获取具体的属性。
Class.forName(driverClass);
 
Connection connection=DriverManager.getConnection(url, user, password);
    return connection;这样可以获取连接!
 如何进行单元测试呢?我们在测试类中构造调用被测试的方法,通过assert这个类可以判断我们的方法返回值是否与我们的预期相同或者不同,
Assert.assertNotNull(connection);


List<Student>list=new List();
Student student=null;
String  sql="select * from student";
PreparedStatement preparedStatement=null;
Connection connection=null;
ResultSet resultSet=null;


try {


resultSet=preparedStatement.executeQuery();
connection=jdbcUtils.getConnection();
preparedStatement =connection.prepareStatement(sql);
 
while(resultSet.next())
{
int id=resultSet.getInt("id");
String name=resultSet.getString("name"); 


                              student =new Student();
                              student.set(***);
                              student.set(***);
                             students.add();
}
} catch (SQLException e) {
 
e.printStackTrace();
}




2  使用spring jdbcTemplate访问数据库


1.添加sping jdbc依赖包!
2.添加spring -content上下文依赖包


编写beans.xml文件。
添加dataSource实体类,<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///springdata"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>


添加jdbcTemplate实体类,
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 
 <property name="dataSource" ref="dataSource"></property>


</bean>


获取上下文,通过类加载器获取
cxt= new ClassPathXmlApplicationContext("beans.xml");


将jdbcTemplate注入到dao中,通过dao管理,既可以进行对数据库访问。




使用spring-data-jpa连接数据库
             <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.8.0.RELEASE</version>
</dependency>




<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.6.Final</version>
</dependency>
第一步,添加依赖。
第二步,添加datasource,以及entitymanagerFactory.
<bean id="dataSource" class="org.springframework.jdbc.datasource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///dbgirl"></property>
<property name="userwork" value="root"></property>
<property name="passwork" value="1234"></property>
</bean>


第三步,创建实体类管理器(entityMnagerFactory),该类的属性应该包括数据源和jpa适配,以及包的扫描路径,以及jpa相关配置。<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataource"></property>
<property name="jpaVendorAdapter">
   <bean class="org.springframework.orm.jp.vendor.HibernateJpaVendorAdapter">
      </bean>
</property>
<property name="packgesToScan" value="com.earl.*"></property>
<property name="jpaProperties">
 <props>
   <prop key="hibernate.ejb.naming_strtegy">org.hibernate.cfg.ImprovedNmin</prop>
   <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDilect</prop>
   <prop key="hibernate.show_sql">true</prop>
   <prop key="hibernate.format_sql">true</prop>
   <prop key="hibernate.hbm2ddl.auto">updae</prop>
 </props>
</property>


第四步,配置事物管理器
<bean id="transactionManager" class="org.springframework.orm.jpa.Jpa">
 <property name="entityManagerFactory" ref="entityManagerFactory"
</bean>


第五步 配置支持注解的事物
<tx:annotation-driven transaction-manager="transactionManager"/>


第六步 配置springdata


<jpa:repositories base-package="com.earl.repository" entity-manager-factory-ref="
entityManagerFactory">
<context:component-scan base-package="com.earl">




Repository类的定义
public interface Repository<T,ID extends Serializable>
{
}




1.Repository是一个空接口,标记接口,没有包含任何方法声明的接口。


2.如果我们定义的接口EmployeeRepository extends Repository,
如果我们定义的接口没有extends Reporitory运行的时候就会报找不到可以用的Bean


3.我们可以添加注解达到不用extends Repository的功能
@RepositoryDefinition(domainClass=Employee.class,idClass=Integer.class)






 










事物必须放在 Service层中,


PagingAndSortingRespository使用


1.该接口包含分页和排序的功能
2.带排序的查询 findAll(Sort sort)
3.带排序的分页查询fubdAll( Pageable pageable)














    JpaSpectificationExecutorRepository接口详解:
  
 Specification封装了Jpa Criteria查询条件:













原创粉丝点击