您的位置:首页 > 其它

创建第一个hibernate程序

2017-06-28 18:44 369 查看
创建第一个hibernate程序

hibernate工作原理



1、创建一个Java项目名为:Hibernate_0_HelloWorld

2、学习建立User-library并导入相应的jar包

3、引入MySQL的jdbc驱动包

4、在MySQL中建立相对应的数据库及表

5、建立hibernate配置文件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.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url"><![CDATA[jdbc:mysql://localhost:3306/cncode?useUnicode=true&characterEncoding=utf8]]></property>
<property name="connection.username">root</property>
<property name = "connection.password">123</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name ="show_sql">true</property>
<mapping resource="com/st/Student.hbm.xml"/>

</session-factory>

</hibernate-configuration>


6、建立Student类:

package com.st;

public class Student {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}


7、建立Student映射文件Student.hbm.xml:

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

<hibernate-mapping>
<class name="com.st.Student" table="student">
<id name="id" column="tb_id">
<generator class="native"/>
</id>
<property name="name" column="tb_name"></property>
</class>
</hibernate-mapping>


8、将映射文件加入到hibernate.cfg.xml中就是在hibernate.cfg.xml中的最后一句话:

<mapping resource="com/st/Student.hbm.xml"/>```
9、写测试类Main,在Main中对Student对象进行直接的存储测试:```
package com.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.st.Student;

public class Test {
public static void main(String[] args){
Session session =null;
Configuration cfg= new Configuration();
SessionFactory fc = cfg.configure().buildSessionFactory();
session=fc.openSession();
session.beginTransaction();
Student s= new Student();
s.setName("lun");
session.save(s);
session.getTransaction().commit();
}
}


MySQL创建名student的数据表:

create table student(tb_id int primary key auto_increment,tb_name varchar(20));


插入第一条数据:

insert into student(tb_id,tb_name) values(1,"lun");


注意,在创建数据表的时候要设置主键为auto_increment 同时还要在MySQL中通过命令行插入第一条数据,否则在hibernate中会产生tb_id无默认值的错误

上面执行的是具有查询功能的hibernate,

现在修改成具有添加操作功能的hibernate:

只需要修改Test.java 中的代码:

package com.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.sg.Grade;
import com.st.Student;

public class Test {
public static void main(String[] args){
Session session =null;
Configuration cfg= new Configuration();
SessionFactory fc = cfg.configure().buildSessionFactory();
session=fc.openSession();
session.beginTransaction();
Grade g = new Grade();
g.setClassname("语文");
Student s = (Student)session.get(Student.class, new Integer("1"));
g.setStudentid(s);
session.save(g);
session.getTransaction().commit();
session.clear();
/*Grade g = (Grade)session.get(Grade.class, new Integer("13"));
System.out.println("学科号:"+ g.getClassid());
System.out.println("学科名:"+ g.getClassname());
System.out.println("学生名: "+g.getStudentid().getName() );
*/
}
}


运行后的结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: