JPA仅仅是一种规范,也就是说JPA仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。
也就是说:
JPA是一套ORM规范,Hibernate实现了JPA规范
什么是spring data jpa?
spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。
Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE hibernate-configuration PUBLIC
3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
5 <hibernate-configuration>
6 <session-factory>
7 <!-- 配置数据库 信息 必须的 -->
8 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
9 <property name="hibernate.connection.username">root</property>
10 <property name="hibernate.connection.password">jay571018</property>
11 <property name="hibernate.connection.url">jdbc:mysql:///Hibernate2_demo1</property>
15 <!-- 2. 配置hibernate信息 可选的 -->
16 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
17 <property name="hibernate.show_sql">true</property>
18 <property name="hibernate.format_sql">true</property>
19 <property name="hibernate.hbm2ddl.auto">update</property>
20
21 <!-- 配置本地线程 绑定session -->
22 <property name="hibernate.current_session_context_class">thread</property>
23
24 <!-- 3 配置对象关系映射文件的位置 -->
25 <mapping resource="org/model/User.hbm.xml"/>
26 </session-factory>
27 </hibernate-configuration>
13 /*
你有很多事放不下吗,做人要潇洒一点。
爱一个人未必要跟她一辈子的,我喜欢一朵花,未必一定要把它摘下来;
我喜欢风,难道让风停下来,让我闻闻;
我喜欢云,难道叫云飘下来,来罩着我。
有时候太照顾别人的感受,会失去自我的。
轻轻的我走了,正如我轻轻的来,挥一挥衣袖,不带走一片云彩。(英雄本色)
*/
1 package org.util;
2 // 世界上有一种鸟没有脚,生下来就不停的飞,飞的累了就睡在风里。
// 一辈子只能着陆一次,那就是死亡的时候(阿飞正传)
3 import org.hibernate.Session;
4 import org.hibernate.SessionFactory;
5 import org.hibernate.cfg.Configuration;
6
7 public class SessionFactoryUtil {
8 private static Configuration configuratrion=null;
9 private static SessionFactory sessionfactory=null;
10 static{//静态代码块 只会在类加载的时候执行一次 创建一次sessionfactory对象 提高性能
11 configuratrion=new Configuration();
12 configuratrion.configure();//加载配置文件
13 sessionfactory=configuratrion.buildSessionFactory();
14 }
15 //创建一个方法返回sessionfactory对象
16 public static SessionFactory getSessionFactory(){
17 return sessionfactory;
18 }
//提供返回 与本地线程绑定的session的方法
19 public static Session get(){
20 return sessionfactory.getCurrentSession();
21 }
22
23 public static void close(){
24 sessionfactory.close();
25 }
26 public static void main(String args[]){
27
28 }
29 }
public void t(){
2 Session session=SessionFactoryUtil.get();
3 Transaction tran=session.beginTransaction();
4 User u=new User();
5 u.setName("a");
6 u.setPassword("a");
7 session.save(u);
8 tran.commit();
9 session.close();//这里不需要关闭session
10 }