Hibernate之Hibernate开发步骤

版权声明:转载请标注来源: https://blog.csdn.net/qq_37844454/article/details/84669957

Hibernate大致的开发步骤如下(点击图片再查看,显示效果更好):

其中的第一步的配置文件Hibernate.cfg.xml文件的主要内容如下:

<hibernate-configuration>
	<session-factory>
    <!-- 链接链接数据库的基本信息 -->
		<property name="connection.username">root</property>
		<property name="connection.password">填写你的mysql的登录密码</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql:///hibernate5</property>
    
    <!-- 配置Hibernate的基本信息 -->
		<!-- Hibernate的方言 -->
		<!-- <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> -->

		<!-- 执行操作是是否在控制台打印sql -->
		<property name="show_sql">true</property>

		<!-- 是否对sql进行格式化 -->
		<property name="format_sql">true</property>

		<!-- 指定指定生成数据表策略(是否在数据控中自动生成表) -->
		<property name="hbm2ddl.auto">update</property>
		
		<!-- 指定关联的.hbm.xml文件 -->
		<mapping resource="cn/cloudspace/hibernate/helloworld/News.hbm.xml"/>
		
	</session-factory>
</hibernate-configuration>

第二步持久化类.java文件的主要内容(省略getter、setter):

public class News {

	private Integer id;
	private String title;
	private String author;
	private Date date;

	public News(String title, String author, Date date) {
		super();
		this.title = title;
		this.author = author;
		this.date = date;
	}

	public News() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public String toString() {
		return "News [id=" + id + ", title=" + title + ", author=" + author + ", date=" + date + "]";
	}

第三步对象关系映射文件.hbm.xml主要内容:

<hibernate-mapping>
    <class name="cn.cloudspace.hibernate.helloworld.News" table="NEWS">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <!-- 指定主键的生成方,native:使用数据库本地生成方式(自动增长): -->
            <generator class="native" />
        </id>
        <property name="title" type="java.lang.String">
            <column name="TITLE" />
        </property>
        <property name="author" type="java.lang.String">
            <column name="AUTHOR" />
        </property>
        <property name="date" type="java.util.Date">
            <column name="DATE" />
        </property>
    </class>
</hibernate-mapping>

第四步Hibernate Api访问数据库文件的主要代码:

@Test
	public void test() {

		// 1、创建一个sessionFactory对象

		SessionFactory sessionFactory = null;

		// 1.1创建Configuration 对象:对应Hibernate的基本设置信息和对象映射关系
		Configuration configuration = new Configuration().configure();

		// 4.0之前这样创建
//		sessionFactory = configuration.buildSessionFactory();

		// 1.2 创建一个ServiceRegistry 对象,Hibernate 4.x以后添加的一个对象
		// Hibernate的任何配置和服务都需要在该对象中注册易后方可使用
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
				.buildServiceRegistry();
		// 1.3
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);

		// 2、创建一个session对象
		Session session = sessionFactory.openSession();

		// 3、开启事务
		Transaction transaction = session.beginTransaction();

		// 4、执行保存操作
		News news = new News("java", "helloworlld", new Date(new java.util.Date().getTime()));
		session.save(news);

		// 5、提交事务
		transaction.commit();

		// 6、关闭session
		session.close();

		// 7、关闭sessionFactory对象
		sessionFactory.close();
	}

Hibernate开发的主要流程就是以上内容了。

API解释说明:

Configuration类:

Configuration类负责管理Hibernate的配置信息。包括如下:

  -Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类、数据库Dialect、数据库连接池等(对应hibernate.cfg.xml文件)

  -持久化类与数据表的映射关系(.hbm.xml文件)

创建Configuration的两种方式:

---属性文件 (hibernate.properties)

Configuration cfg = new Configuration();

---Xml文件(hibernate.xfg.xml,推荐使用):

Configuration cfg = new Configuration().configure();

---Configuration的configure方法还支持带参数访问:

File file = new File("simple.xml");
Configuration cfg = new Configuration().configure(file);

SessionFactory接口:

针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。

---SessionFactory对象一旦构造完毕,既被赋予特定的配置信息。

---SessionFactory是生成Session的工厂。

---构造SessionFactory很耗费资源,一般情况下一个应用只初始化一个SessionFactory对象。

---Hibernate4新增了一个SevericeRegistry接口,所有基于Hibernate的配置或者服务都必须统一向这个接口注册后方可使用

Hibernate4中创建SessionFactory的步骤:

// 1.1创建Configuration 对象:对应Hibernate的基本设置信息和对象映射关系
  Configuration configuration = new Configuration().configure();

  // 4.0之前这样创建
  //sessionFactory = configuration.buildSessionFactory();

  // 1.2 创建一个ServiceRegistry 对象,Hibernate 4.x以后添加的一个对象
  // Hibernate的任何配置和服务都需要在该对象中注册易后方可使用
  ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
				.buildServiceRegistry();
  // 1.3创建sessionFactory对象
 SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

Session接口:

-Session是应用程序与数据库之间交互操作的一个单线程接口,是Hibernate运作中心,所有的持久化对象必须在session的管理下才可以进行持久化操作,此对象的生命周期很短;Session有一个一级缓存,现实执行flash之前,所有的持久层操作都缓存在session对象中,相当于JDBC中的Connection。

-持久化类与Session关联起来以后就具有了持久化的能力。

-Session的方法

---取得持久化对象的方法:get()/set()

---持久化对象都的保存、更新、删除:save()、update()、saveOrUpdate()、delete()

---开启事务:beginTransaction()

---管理Session的方法:isOpen()、flush()、clear()、evict()、close()等

Transaction (事务):

-代表一次原子操作,它具有数据库事务概念。所有持久层都应该在该事务管理下进行,即使是只读操作。

Transaction transaction = session.beginTransaction();

-常用方法:

---commit():提交相关联的session实例

---rollback():撤销事务操作

---wasCommitted():检察事务是否提交

Hibernate配置文件的两个配置项:

-hbm2ddl.auto:该属性可帮助我们实现正向工程,即由Java代码生成数据库脚本,进而生成具体的表结构。(取值:create|update|create-drop|validate)

取值说明:

---create:会根据.hbm.xml文件来生成数据表,但是每一次运行都会删除上一次生成的表,重新生成表,哪怕第二次没有任何改变

---create-drop:会根据.hbm.xml文件来生成数据表,但是SessionFactory一关闭,表就自动删除

---update:最常用的属性值。也会根据.hbm.xml文件来生成数据表,但是若.hbm.xml文件和数据库中对应的数据表的表结构不同,Hibernate将更新数据表结构,但是不会删除已有的行和列

---validate:会和数据库中的表进行比较若.hbm.xml文件中的列在数据库表中不存在,则标出异常。

-format_sqlL:是否将SQL转化为格式良好的SQL语句(取值:true|false)

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_37844454/article/details/84669957