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查询条件:
阅读全文
0 0
- jdbc-jpa
- 【Java.JDBC/ORM】JPA
- JDBC,ORM,JPA,Hibernate
- jdbc or hibernate(jpa)
- JDBC与JPA
- JPA JDBC hibernate mybatis对比
- spring 配置jdbc/hibernate/jpa
- hibernate jdbc jpa 事务超时
- JPA与JDBC的区别
- [Play!] play jpa、原生jpa、jdbc使用注意
- Hibernate or JPA or JDBC or?
- where is difference among jpa jdbc jta
- JDBC,JdbcTemplate,JPA,Hibernate之间的关系
- JDBC,JdbcTemplate,JPA,Hibernate之间的关系概述
- jpa+spring jdbc混合作战引发的缓存问题
- Spring笔记(五): spring 整合jdbc、hibernate、jpa
- jdbc、jdbcTemplate、hibernate、jpa、spring之间的关系
- jdbc hibernate(session) jpa (entityManager ) spring-data-jpa mybatis完全混用
- Flask-sqlalchemy连接数据库
- ubuntu下postgreSQL9.6安装配置
- oracle、mysql、PostgreSQL有关时间查询和时间切割
- 第一章-1.5.1节
- 【软件工程考研】考研准备第一个月tag
- jdbc-jpa
- Map原理分析
- 1040. 有几个PAT(25)
- sql 数字转换为字符
- SQL查询语句题目(二)
- NoSQL文档型数据库之MongoDb的配置与使用
- 2017.10.1 蚯蚓 思考记录
- JVM (PART VI)垃圾收集算法
- typecho安装后登录失败报错 405 Not Allowed nginx/1.10.2