hibernate02环境的搭建

hibernate: 持久层的框架!
是一个开放源代码的对象关系映射框架(ORM)!之前我们访问数据库使用JDBC!
对JDBC进行了轻量级的对象封装!是一个全自动ORM框架!(底层可以自动生成sql语句)!
使用面向对象的思想来操作数据库!

创建一个java项目

引入需要的hibernate需要的jar包以及连接数据库需要的驱动包

把jar包放入项目中并引用

创建对应的学生类

/**
 * 学生的实体类
 */
public class Student {

    private Integer id;
    private Integer age;
    private String name;// 和数据库中不一致 (sname)

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student(Integer id, Integer age, String name) {
        super();
        this.id = id;
        this.age = age;
        this.name = name;
    }

    public Student() {
        super();
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", age=" + age + ", name=" + name + "]";
    }

}

创建对应的数据库中的学生表

找到对应mapping映射文件,放在和实体类相同的包下!并修改其中的内容

修改Student.hbm.xml文件之后的内容

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

<!-- 映射文件  M   目的;实体类和 数据库中的表 产生关系
package:是说明我们需要映射的实体类的包名
class  name:对应的是实体类的名称(如果省略了package属性,必须书写全类名)
property,id  name:对应的是实体类中的属性名,如果和数据库中的字段一致,则可以省略column
 -->
<hibernate-mapping package="cn.bdqn.bean">
  <class name="Student" table="stu">
      <id name="id">
      <!--主键生成策略
      assigned:主键的生成值完全由用户决定,与底层数据库无关。
              在调用session.save()之前必须指定主键值,否则会抛出异常!
      -->
        <generator class="assigned"/>
      </id>
      <!--配置其他属性的映射  -->
      <property name="age"/>
      <property name="name" column="sname"/>
  </class>
</hibernate-mapping>

找到hibernate核心的配置文件并修改内容

修改后的hibernate.cfg.xml文件内容

<!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>
    <property name="connection.url">
        jdbc:oracle:thin:@localhost:1521:orcl
    </property>
    <property name="connection.username">t10</property>
    <property name="connection.password">t10</property>
    <property name="connection.driver_class">
        oracle.jdbc.OracleDriver
    </property>
    <!--方言  -->
    <property name="dialect">
        org.hibernate.dialect.Oracle9Dialect
    </property>
    <!--是否显示底层生成的sql语句  -->
    <property name="show_sql">true</property>
    <!--格式化生成的sql语句  -->
    <property name="format_sql">true</property>
    <!--加载我们配置的映射文件  全路径 -->
    <mapping resource="cn/bdqn/bean/Student.hbm.xml" />

</session-factory>
</hibernate-configuration>

创建对应的测试类

package cn.bdqn.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import cn.bdqn.bean.Student;

/**
 *
 * @author 小豆腐
 *                      以后的你,会感谢现在努力的自己!努力!坚持!不放弃!
 *
 *  hibernate核心的
 *  1个类
 *  01. 类  Configuration !对核心配置文件的读取!   

 *  5个接口
 *  01. SessionFactory:负责初始化hibernate需要的参数!在程序中有一个就够了!之后我们会写成单例模式!
 *  02. Session:不是我们的HttpSession(用户session)!  我们hibernate的session
 *      是用来操作对象(增删改查)!创建事务的对象!我们现在使用的session不是线程安全的!
 *  03. Transaction :进行事务的操作!
 *  04. Query :hibernate中查询的接口(sql , hql)
 *  05. Criteria  :和Query相似!但是做了一些封装!
 */
public class StudentTest {

    // 新增学生信息
    @Test
    public void addStudent() {
        /**
         * 01.读取核心配置文件    因为我们需要的信息都在这个核心配置文件中(连接数据库的四要素,映射文件)
         * configure()底层默认去src下面查询了hibernate.cfg.xml文件
         */
        Configuration configuration = new Configuration().configure();
        // 02.创建sessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        // 03.打开session
        Session session = sessionFactory.openSession();
        // 04.开启事务
        Transaction transaction = session.beginTransaction();
        // 05.创建一个Student对象
        Student student = new Student(400, 50, "小黄");
        // 06.持久化操作
        session.save(student);
        // 07.提交事务 的 会产生sql语句
        transaction.commit();
        // 08.关闭session
        session.close();
    }

    // 新增学生信息
    @Test
    public void addStudent2() {
        /**
         * 01.读取核心配置文件    因为我们需要的信息都在这个核心配置文件中(连接数据库的四要素,映射文件)
         * configure()底层默认去src下面查询了hibernate.cfg.xml文件
         */
        Configuration configuration = new Configuration().configure();
        // 02.创建sessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        // 03.打开session
        Session session = sessionFactory.openSession();
        // 04.开启事务
        Transaction transaction = session.beginTransaction();
        // 05.创建一个Student对象
        Student student1 = new Student(50, 50, "小黄2");
        session.save(student1);
        Student student2 = new Student(60, 50, "小黄2");
        session.save(student2);
        Student student3 = new Student(7, "小黄2"); // 没有手动的给主键赋值,会抛出异常
        session.save(student3);
        /**
         * 07.提交事务
         * student1  和student2  没有问题
         * 但是student3 报错了
         * 那么事务还会提交吗?  不会! ACID
         *
         * 如果说 每个save()都会产生sql语句,与数据库产生交互! 这样数据库的压力大!
         * 怎么减轻?
         * 在commit()的时候,把之前的sql语句一起发送给数据库执行!
         */
        transaction.commit();
        // 08.关闭session
        session.close();

    }

}
时间: 2024-10-10 08:44:44

hibernate02环境的搭建的相关文章

plsql的环境与介绍:环境的搭建和plsql的简单介绍

PLSQL编程 1.环境的搭建 (1)创建一个存储表空间 SQL> conn /as sysdbaConnected. SQL> create tablespace plsql datafile '/u01/oracle/oradata/ORCL/plsql01.dbf' size 1G; Tablespace created. (2)创建PLSQL用户SQL> create user plsql identified by plsql default tablespace plsql;

scikit-learn 和pandas 基于windows单机机器学习环境的搭建

很多朋友想学习机器学习,却苦于环境的搭建,这里给出windows上scikit-learn研究开发环境的搭建步骤. Step 1. Python的安装 python有2.x和3.x的版本之分,但是很多好的机器学习python库都不支持3.x,因此,推荐安装2.7版本的python.当前最新的python是2.7.12.链接如下: https://www.python.org/downloads/release/python-2712/ 里面可以看到有32位版和64位版的.如果你的机器是64位版的

开发环境——基于RHEL 6.8开发环境的搭建

开发环境--基于RHEL 6.8开发环境的搭建 本文讲述了基于RHEL 6.8操作系统搭建开发环境,主要安装了GCC 4.9.3.Qt 5.7.Apache 2.4.25.MySQL 5.6.35.本文同时适用于在Linux主机无互联网环境下搭建开发环境,只需要将所需安装包下载后拷贝到Linux主机即可. 一.RHEL6.8安装 1.RHEL 6.8下载 下载RHEL 6.8安装包:rhel-server-6.8-x86_64-dvd.iso 2.RHEL 6.8安装 安装过程中选择Develo

windows环境下搭建vue+webpack的开发环境

前段时间一直在断断续续的看vue的官方文档,后来就慢慢的学习搭建vue的开发环境,已经有将近两周了,每到最后一步的时候就会报错,搞的我好郁闷,搁置了好几天,今天又接着搞vue的开发环境,终于成功了.我要把我所参考的文档和实际遇到的问题分享给大家.由于本人也是初级菜鸟一枚,如果有错误,还望谅解指正.下面言归正传: 所参考的文档链接:http://blog.csdn.net/syyling/article/details/52004892 http://www.cnblogs.com/ixxonli

JMeter--二、在Windows环境上搭建wordpress

为了学习使用JMeter,在Windows环境上搭建了wordpress. 使用JMeter录制或是编写登录worepress.编辑文章.删除文章的脚本. 首先了解一下wordpress是什么? WordPress是一个免费的开源项目,是博客平台:也可以把 WordPress当作一个CMS(Content Manager System,内容管理系统)来使用. wordpress是使用PHP语言和MySQL数据库开发的. 因此,为了能够正常使用wordpress,我们需要在windows环境上搭建

红帽6.5下Java环境的搭建

红帽6.5下Java环境的搭建 一.安装包 安装包的选择根据自己的需求以及其他软件环境需要的,比如某些软件版本还不到支持jdk1.7的程度,还有linx和windows下的安装包格式不一样,这些都是要考虑到的 这次是使用jdk1.7. 二.将安装包解压缩到某个目录下,并做一个软链接 1.将压缩包解压缩到/usr/local/目录下,注意后面的参数-C 2.在该目录下我们可以将长的jdk等做个软链接,其好处就是,在你做之后的操作时,可以不需要写大串的字符,比如环境变量的配置 3.下一步该配置jav

Java开发和运行环境的搭建

Java开发需要准备的东西? JDK+Eclipse 其中JDK的意思是Java开发工具包,Eclipse是进行用于做Java程序开发的工具(当然你也可以用记事本什么的去做). 其他开发工具:JCreator,JBuilder,... jdk的介绍和安装教程度娘里面到处都是,这里自己也在啰嗦一下吧. 关于jdk的详细介绍: JDK是Java Development Kit的缩写,即Java开发工具集.JDK是整个Java的核心,包括了Java运行环境(JRE).Java开发工具和Java基础类库

hadoop2 环境的搭建(手动HA)

1.手工切换ha的环境的搭建(比hadoop1多出来journalnode的配置) namenode:hadoop110和hadoop111 datanode:hadoop112.hadoop113.hadoop114 journalnode:hadoop110.hadoop111.hadoop112 resourcemanager:hadoop110 nodemanager:hadoop112.hadoop113.hadoop114 1.1.配置文件(hadoop-env.sh.core-si

Android开发环境的搭建

(我果然在作死的道路上越走越远了...) 花了一下午的时间搭建了Anroid开发环境,来说说搭建的过程: 首先,百度! 网上关于Android开发环境搭建的教程有很多,但许多都很杂乱,而且时间久远已经不是很准确了. 浏览了众多教程,贴两个个人觉得较不错的教程地址: 1.http://blog.csdn.net/fl_xin/article/details/39472019 2.http://wenku.baidu.com/link?url=noSH3FDTfaZRe59RTFtuemi-6155