Hibernate入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate入门相关的知识,希望对你有一定的参考价值。

Hibernate入门:执行增,删,改,查操作

1.我们在新建项目之后需要导入相应的jar包

技术分享

2.我们需要在src目录下新建一个xml文件,名为hibernate.cfg.xml(大配置文件)

 

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>


    <session-factory>

        <!-- Database connection settings 数据库连接设置-->
        <!-- 驱动类 -->
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <!-- url地址 -->
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">Hibernate</property>
        <property name="connection.password">orcl</property>

        <!-- SQL dialect  (SQL 方言) -->
        <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>


        <!--在控制台打印后台的SQL语句 -->
        <property name="show_sql">true</property>
        
        
        <!-- 格式化显示SQL -->
        <!-- <property name="format_sql">true</property> -->
        

        
        <!-- 自动生成student表 -->
         <property name="hbm2ddl.auto">update</property>  
        <!-- 关联小配置 -->
        <mapping resource="cn/a/happy/Student.hbm.xml" />
        <!-- <mapping class="cn.happy.entity.Grade"/> -->
        
    </session-factory>
    </hibernate-configuration>

 

其中,driver_class为驱动类,url为Oracle地址,username为用户名称,password为用户密码,dialect为方言(oracle版本),show_sql指得是是否在程序运行时在控制台输出记录,mapping resource指的是需要关联小配置文件

2.1小配置文件(和实体类同名)Student.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 
 <hibernate-mapping package="cn.a.happy">
     <class name="Student" table="Student">
         <id name="sid" type="int" column="SID">
         </id>
         <property name="sname" type="string" column="SNAME"/>
         <property name="sage" type="int" column="SAGE"/>
     </class>    
 </hibernate-mapping>

其中,package指的是小配置文件所在的包,class节点下name指的是实体类名,table指的是数据表名;id指的是数据表中的自增列,id节点下的name指的是实体类的ID,type指的是数据类型column是数据表中对应的列名;property节点下的name指的是实体类中的属性sname,type指的是数据类型,colmun指的是数据表中的列名

3.我们需要新建一个实体类,和小配置文件在同一个包下,实体类中有sid,sname,sage属性,并且有get和set方法和tostring方法

/*
 * 学生实体类
 */
public class Student {
    //数据类型全部都是引用类型
    
    //学号
    private Integer sid;
    //姓名
    private String sname;
    //年龄
    private Integer sage;
    
    @Override
    public String toString() {
        return "Student [sid=" + sid + ", sname=" + sname + ", sage=" + sage
                + "]";
    }
    public Student() {
        
    }
    public Integer getSid() {
        return sid;
    }
    public void setSid(Integer sid) {
        this.sid = sid;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public Integer getSage() {
        return sage;
    }
    public void setSage(Integer sage) {
        this.sage = sage;
    }

}

4.这时我们就需要在Test类中进行数据操作了

public class Text {
    Session session;
    Transaction tx;
    public static void main(String[] args) {
        Class clazz=Student.class;
        System.out.println(clazz);

    }
    @After
    public void AfterTest()
    {
        tx.commit();
        HibernateUtil.CloseSession();
    }
    @Before
    public void BeforeTest()

    {
        session=HibernateUtil.getSession();
        tx=session.beginTransaction();
    }
    //用get方法查询
        @Test
        public void getTest()
        {
             Student stu=(Student)session.get(Student.class, 2);
             System.out.println(stu);

        }
    //修改
        @Test
        public void Update()
        {
            Student stu= (Student)session.load(Student.class,2);
            stu.setSname("woshigou");
            session.update(stu);
            
            System.out.println("update OK!");
        }
    //删除的方法
    @Test
    public void delecttest()
    {    
        Student stu=new Student();
        stu.setSid(1);
        
        session.delete(stu);
        
        System.out.println("delect OK!");
    }
    @Test
    //增加的测试
    public void addtest()
    {

        Student stu=new Student();
        stu.setSid(2);
        stu.setSname("王小三");
        stu.setSage(25);
        //1.读取大配置文件,获取要连接的数据库信息
        Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
        //2.创建SessionFactory工厂
        SessionFactory factory=cfg.buildSessionFactory();
        //3.加工session
        Session session=factory.openSession();
        Transaction tx = session.beginTransaction();
        //4.Hibernate保存
        session.save(stu);
        tx.commit();
        System.out.println("session");
    }
}

我们把公共的代码统一封装到类中

public class HibernateUtil {
        private static Configuration cfg=new Configuration().configure();
        private static SessionFactory factory=cfg.buildSessionFactory();
        //公用的方法getSession();
        public static Session getSession()
        {
            return factory.openSession();
        }
        //关闭的方法
        public static void CloseSession()
        {
            getSession().close();
        }
}

这样我们就可以使用Hibernate框架进行数据测试了!

                                                            2016年8月28日15:22:27

 

以上是关于Hibernate入门的主要内容,如果未能解决你的问题,请参考以下文章

hibernate多对多 一对多 及简单入门

hibernate框架的简单入门

Hibernate简述及入门实例

推荐net开发cad入门阅读代码片段

Hibernate入门

Hibernate入门