资源地址:https://download.csdn.net/download/yu_duan_hun/10554339
1.怎么导入,下载上面的资源,导入libs目录下全部资源到相同目录
这个不好描述,官网不能登录,找了好久才找到一个可以用的完整包,总之可以直接用,是hibernate5版本的。
2.干嘛用
用于简化数据库操作,不然总要jdbc写复杂sql
3.原理
就是通过配置实体类,操作hibernate时间接操作数据库。
4.配置
说实话因为自学,配置文件干什么用,怎么用,放在哪个目录的问题很头痛,这里讲解一下:
hibernate.cfg.xml:配置sql驱动以及各个子配置文件位置,我这里用的mysql,各种驱动方式请自行百度。这个放在src的根目录,不要放在包里面,放在最外面。
xx.hbm.xml:用于配置实体类和数据表映射,这个可以任意,放哪里都行,要和hibernate.cfg.xml配置的位置匹配。
hibernate.cfg.xml结构
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.url">jdbc:mysql://localhost:12001/jspdb</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<mapping resource="com/a/bean/News.hbm.xml" />
</session-factory>
</hibernate-configuration>
username标签内对应数据库用户名,password对应数据库密码,
url对应jdbc,这里列举部分:
Microsoft SQL Server
jdbc:microsoft:sqlserver://<server_name>:<port>
Microsoft SQL Server 2005
jdbc:sqlserver://<server_name>:<port>
Oracle
jdbc:oracle:thin:@//<host>:<port>/ServiceName
MySQL(默认端口3306):
jdbc:mysql://<host>:<port>/<database_name>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
这两句固定,不用配置
这个对应实体类对数据表的映射,简单说就是有多少个表,这里就要写多少条,注意前面包名的格式要用斜线分开,不能用点。
<mapping resource="com/a/bean/News.hbm.xml" />
根据上面映射位置,此文件放在com.a.bean.News.hbm.xml
News.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-3-6 16:03:59 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<!-- 映射到数据库news表-->
<class name="com.a.bean.News" table="news">
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<property name="title" type="java.lang.String">
<column name="title" />
</property>
<property name="content" type="java.lang.String">
<column name="content" />
</property>
</class>
</hibernate-mapping>
此处注意type,基本数据类型可直接写,引用数据类型要写全包名。name对应实体类的名称,column的name对应数据表名称,主键要写native(跨数据库)标注,也可设置为identity,如果oracle要设置为sequence。如不要自增,请设置为assigned或者uuid.hex,uuid.string随机.
5.实体类
1.@Id标注主键
2.@GeneratedValue标注主键get
3.注解要用javax注解不要用hibernate的
4.实际数据库表要设置为主键时此字段,并设置为自增
5.如不要自增,请设置为assigned或者uuid.hex,uuid.string随机