1.首先要引入我们要用到的jar包
hibernate3.jar核心 + required 必须引入的(6个) + jpa 目录 + 数据库驱动包
如下图所示:
引入jar包的时候遇到了一些问题,一开始安装在了src下新建的lib文件夹下,但是后来发现不能够使用,需要建立一个新的
User Library,将自己所需的jar包add上,之后在项目上右键Build path---add library,将之前自建的library导入。
2.为了与数据库表建立映射关系,编写一个对象User.java
package sunrui; public class User { private int id; private String username; private String password; private String cellphone; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getCellphone() { return cellphone; } public void setCellphone(String cellphone) { this.cellphone = cellphone; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
3.编写对象映射->User.hbm.xml。
这一部分是在网上找的编写代码,在project>etc里没有看见,里面只找到了.cfg.xml文件
<?xml version="1.0" encoding="UTF-8"?> <hibernate-mapping package="sunrui"> <!--类名为User,表名也为User--> <class name="User" table="m"> <!--主键映射,属性名为id,列名也为id--> <id name="id" column="id"> <!--根据底层数据库主键自动增长--> <generator class="native"/> </id> <!--非主键映射,属性和列名一一对应--> <property name="username" column="username"/> <property name="cellphone" column="cellphone"/> <property name="password" column="password"/> </class> </hibernate-mapping>
需要注意的是class name和table。一个是自己编写的类名,一个是自己想要建立到数据库中表的名字,表的名字可以随便写,但要和后面的代码对应好,如果写错类名会找不到文件
这一部分并没有什么困难的地方,问题出现一般就是没有对应好类名,另外就是id是主键列,generator根据底层数据库指定生成方法,如果主键不自增就会报错。
4.配置Hibernate核心配置文件(hibernate.cfg.xml)
这个需要创建在src目录下,注意不要写到自己自建的包中,hbm.xml文件才是写在自己的包中的
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库连接配置 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/abc</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">sunrui1314</property> <!-- 数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 其他相关配置 --> <!-- 显示hibernate在运行时候执行的sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 格式化sql --> <property name="hibernate.format_sql">true</property> <!-- 建表 --> <property name="hibernate.hbm2ddl.auto">create</property> <!--加载所有映射--> <mapping resource="sunrui/User.hbm.xml"/> </session-factory> </hibernate-configuration>
在我们下载的hiberate文件目录下他原本是这个样子滴
这一部分需要注意的是
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>//这里是数据库驱动 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/abc</property>//这里是数据库连接,你的连接名和建的数据库名,我们这里是abc <property name="hibernate.connection.username">root</property>//这里是数据库用户名 <property name="hibernate.connection.password">sunrui1314</property>//这里密码千万不要写错
还有加载全部映射的时候,mapping resource后面要接的是你自己建的包名+cfg.xml文件名,如果写错了会找不到文件相应目录无法成功执行
5.大功告成开始测试,建立测试类sr.java
package sunrui; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Sr { public static void main(String[] args) { //创建对象 User m = new User(); m.setPassword("666"); m.setCellphone("18846420216"); m.setUsername("ifyou"); //获取加载配置管理类 Configuration configuration = new Configuration(); //不给参数就默认加载hibernate.cfg.xml文件, configuration.configure(); //创建Session工厂对象 SessionFactory factory = configuration.buildSessionFactory(); //得到Session对象 Session session = factory.openSession(); //使用Hibernate操作数据库,都要开启事务,得到事务对象 Transaction transaction = session.getTransaction(); //开启事务 transaction.begin(); //把对象添加到数据库中 session.save(m); //提交事务 transaction.commit(); //关闭Session session.close(); } }这里的主要问题也就是类名不要写错!类名就是与数据库建立映射关系的User,还有就是相应的import不要忘记加,一般来说代码打上之后会有提示,选择相对的import包就完成了,最后是不要忘记关闭session,session做任何的操作,如果没有显示的调用commit()方法,都不会清理缓存、执行相应的SQL、提交事务。
6.结果显示
可以看到m表已经被建立在数据库中了