Hibernate学习笔记(一)
我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改
以下是b站视频地址:
*为什么不用sql语句
*使用完全的面向对象的技术:orm
*什么是hibernate
*其他ORM框架:MyBatis,Toplink,EJB
*eclipse手动导入dtd文档
DTD一般应用在应用程序中定义数据交换类型的文档,一般用在xml配置文件中,有些时候在eclipse中并不能加载一些提示,这个时候需要手动导入,导入方法如下:
1、首先根据声明的网址下载.dtd的文件,放到项目某一个目录中,建议导入项目中的,这样移植的时候会一同移植过去。
2、单击菜单中的Window - Preferences
3、打开的对话框中左边选择XML-XML Catalog,右边点击Add...按钮
4、然后选择dtd位置,推荐加入Workspace...中的,原因刚才说过了,选好之后确定;然后Key输入框将Key-type选择为URI,输入下面的http地址
将内容复制到文本框中:
最后单击OK,单击Finish完成导入,,
导入后回到xml配置文件编辑界面,会发现提示出现了,如下图:
*hibernate框架核心文档hibernate.cfg.xml设置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
<hibernate-configuration>
<session-factory>
<!-- 1.配置数据库信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate_lean?useUnicode=true&characterEncoding=utf-8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">bolin123.</property>
<!-- 2.配置hibernate信息 -->
<!-- 配置session与本地线程绑定 -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- 输出低层的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 低层的sql语句格式化 -->
<property name="hibernate.format_sql">true</property>
<!--
hibernate帮你创建表,要在配置之后
update:有表,更新;无表,创建。
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--
配置数据库方言
让hibernate识别不同数据库中不同的关键字
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>注意此处配置要符合mysql版本
<!-- 3.将映射文件放到核心配置文件中 -->
<mapping resource="cn/Hibernate/lean/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
*映射实体类xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
< !--dtd约束 -- >
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<hibernate-mapping>
< !-- 是实体类和表之间实现映射关系 -- >
<class name="cn.Hibernate.lean.User" table="t_User">
<! --
实体类id与表id对应
hibernate要求实体类有一个属性为唯一值
hibernate要求表中有一个字段为唯一值
-- >
<! -- name属性值是指类中的属性名称,column是指数据库中表的字段名称-- >
<id name="uid" column="uid">
< !--
设置表中id生成策略
native:主键和自动增长
uuid:自动生成uuid值
-- >
< !-- <generator class="uuid"></generator> -- >
<generator class="native"></generator>
</id>
< !-- 配置其他属性 -- >
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="address" column="address"></property>
</class>
</hibernate-mapping>