Hibernate的使用

#学习笔记
#仅代表个人理解,缺漏之处望评论交流

Hibernate的使用

#这里只讲Hibernate的使用,并不与任何其他框架进行整合

首先
我们要先将Hibernate下载下来,解压后找到在 lib->required下的jar包,是Hibernate所需要的jar包,然后就是写配置的了。
Hibernate的主配置文件了,叫做“ hibernate.cfg.xml "文件,这是一个默认名称,我们一般不会改变这个文件的名称,因为当程序启动时会自动加载这个文件(具体的机制是什么,我也没做太多了解)。我们在这里可以配置hibernate自身属性,数据库驱动,数据库连接和数据库方言等等。一般在src下创建一个名称为hibernate.cfg.xml的xml文件。

实例代码如下:

<hibernate-configuration>
	<session-factory>
		<!-- 驱动路径注意数据类型 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 数据库路径 -->
		<property name="hibernate.connection.url">jdbc:mysql:///lianxi</property>
		<!-- 数据库用户名 -->
		<property name="hibernate.connection.username">root</property>
		<!-- 数据库密码 -->
		<property name="hibernate.connection.password">123</property>
		<!--方言,便于hibernate对象操作转化为合适的数据库语句  -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--是否显示sql语句,sql一般会很难看  默认为false-->
        <property name="hibernate.hibernate.show_sql">true</property>
        <!-- 显示sql语句是否有一定格式 -->
        <property name="hibernate.hibernate.format_sql">true</property>
        <!-- 是否自动建表:update的意思是每次启动会检查表结构,有问题就重新调整 -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--下一个层级的映射文件,用来配置bean对象与数据表之间的关系  -->
        <mapping resource="com/cn/bean/UserBean.hbm.xml"/> 
	</session-factory>
</hibernate-configuration>

接着就是实体类的映射文件了

hibernate可以通过实体类来操作数据库,那么每个实体类都要有一个对应的映射文件,这个映射文件将实体类与数据库结构进行对应,实体类的属性名对应数据库的字段名。而这个映射文件一般以“实体类名.hbm.xml"的格式命名。并且一般与实体类放在同一个包下。并且,每一个实体类映射文件都要在hibernate.cfg.xml这个主文件中去“注册”,如上述实例代码中的“ ”就是对下面的映射文件的注册。

实例代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- 注意包名,不写的话下面要写权限名 -->
<hibernate-mapping >
	<!-- 类名对应表名 -->
	<class name="com.cn.bean.UserBean" table="lianxi01">
		<!-- 主键使用id标签,然后对应属性名与列名 -->
		<id name="id" type="int" column="id">
			<!-- 自增长主键不同,数据库有不同类型的自增长类型,具体百度 -->
			<generator class="identity"></generator>
		</id>
		<!-- 非主键映射关系,注意类型并不是单纯的java类型也不是数据类型,而是一种中间类型,注意大小写,特别是string在这里开头要小写 -->
		<property name="userName"  column="userName"></property>
		<property name="userPassword"  column="userPassword"></property>
	</class>
</hibernate-mapping>

这些配置文件中的标签具体含义和功能就不在具体说了。不明白可以百度。面向百度编程。

最后就是用hibernate写dao层代码去操作数据库

hibernate对数据库操作进行了封装,也就是将我们会常用的操作方法进行了封装,也是通过jdbc来操作数据库,只不过是把方法封装了,不需要我们去一次次的每一步都去写那些繁琐重复的代码,这也是为什么要用框架,因为方便整洁,规范。hibernate有很多方法,在这就不一 一举例了,以查询为例,进行简单的演示。

public void getUser() {
		//读取配置文件,获取session,开启事务
		Configuration cfg = new Configuration();
		cfg.configure();
		SessionFactory sessionFactory = cfg.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();
		
		//实例User对象
		UserBean userbean = new UserBean();
		//根据id查询
		UserBean userb = session.get(UserBean.class, 1);
		//提交事务,关闭session sessionFactory
		//tx.commit();
		session.close();
		sessionFactory.close();
	}

这是一个简单的根据id查询数据的例子,与传统的查询不同,我们没有自己写sql语句,而是调用了hibernate中的session里的get方法,将实体类以及要查询的id值传进去,就可以查询出结果。当然,可能都会疑惑,说用框架都是为了简化开发,但是为什么我觉得反而更加麻烦了呢?其实,刚开始我也是这样觉得,但是这是因为现在只有一个查询操作,当对数据库操作的量上去了,就会体现这个框架的优点,并且我在这里为了使例子更加的通俗易懂,更加的直观,所以在例子中将每一步都写了出来,有些地方都可以封装成工具类,这样就更加方便。

补充

增:一般用save方法:session.save(userbean);
删:session.delete(usersEntity);这里的usersEntity是先通过查询得到的实体类对象;
改:session.update(usersEntity);还有saveOrUpdate方法更加强大。
查:session.get(UserBean.class, 1);例子中用到的这个方法,当然还有load()懒加载。

上述这些只是简单的举例,hibernate中对每一个操作都有多个对应方法,具体根据实际需求选择使用。

hibernate支持注解的方式去配置,注解相对与xml更加的方便,但是个人觉得,想要明白hibernate的机理,还是要把xml的方式掌握。注解在这里就不多说了,这个很简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值