Hibernate利用描述对象和数据库表之间映射的元数据,自动把Java应用程序中的对象,持久化到关系型数据库的表中

关于hibernate

这是关于hibernate,在网上看到的一句话
虽然不是特别明白,但是结合hibernate方法,大概明白了是什么意思
hibernate的效果就是把sql语句变成get(),set()方法
不得不说,还确实是挺节省人工的
将程序员从低质量的代码输出机器中解放了出来


Hibernate上手

由于是用的maven导包,所以hibernate导jar包反而变成了最简单的事情
直接去maven仓库搞个标签来就好了
然后要创建一个实体类,写好get(),set()方法

创建映射配置文件

在resource下创建Customer.hbm.xml
用来告诉hibernate代码里的键值对对应的是数据库的哪些条目

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

<hibernate-mapping>
<!-- 建立类与表的映射 name里是实体类的路径,table是这个实体对应的表名-->
<class name="com.meimeixia.hibernate.demo01.Customer" table="cst_customer">
    <!-- 建立类中的属性与表中的主键相对应 一般推荐用id做主键(唯一且可以自增)-->
    <id name="cust_id" column="cust_id">
        <!-- 主键自增,如果主键不是int型要注释下一行 -->
        <generator class="native" />
    </id>
    
    <!-- 建立类中的普通属性和表中的字段相对应 -->
    <property name="cust_name" column="cust_name" />
    <property name="cust_source" column="cust_source" />
    <property name="cust_industry" column="cust_industry" />

</class>


根据项目不同可以在这里改一改
也简单

创建核心配置文件

hibernate.cfg.xml还是创建在资源路径下
老师说除了web.xml其他的xml都放在资源目录下
(这也太黄暴了...
这个文件主要就是告诉hibernate数据库的地址啊,端口啊,密码啊,方言啥的

<?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>
    <!-- 下面是三个必须要有的配置 -->
    <!-- 配置连接MySQL数据库的基本参数 -->
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <!--下面这行中的mysql后面接的是数据库地址+端口+数据库名   问号后面的是设置编码和时区-->
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hadoop?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">liayun</property>
    
    <!-- 配置Hibernate的方言 -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    
    <!-- 下面两个是可选的配置哟! -->
    <!-- 打印sql语句 -->
    <property name="hibernate.show_sql">true</property>
    <!-- 格式化sql语句 -->
    <property name="hibernate.format_sql">true</property>
    
    <!-- 告诉Hibernate的核心配置文件加载哪个映射文件 -->
    <mapping resource="com/meimeixia/hibernate/demo01/Customer.hbm.xml"/>
</session-factory>

使用hibernate

这么快就搞定了
简直不要太聪明~
开始写dao层代码

public class HibernateDemo1 {

//保存用户的案例
@Test
public void demo1() {
    //1. 加载Hibernate的核心配置文件
    Configuration configuration = new Configuration().configure();
    //如果在Hibernate的核心配置文件没有设置加载哪个映射文件,则可手动加载映射文件
    //configuration.addResource("com/meimeixia/hibernate/demo01/Customer.hbm.xml");
    
    //2. 创建SessionFactory对象,类似于JDBC中的连接池
    SessionFactory sessionFactory = configuration.buildSessionFactory();
    
    //3. 通过SessionFactory获取到Session对象,类似于JDBC中的Connection
    Session session = sessionFactory.openSession();
    
    //4. 手动开启事务,(最好是手动开启事务)
    Transaction transaction = session.beginTransaction();
    
    //5. 编写代码
    Customer customer = new Customer();
    customer.setCust_name("张小敬aaa");
    
    session.save(customer);//保存一个用户
    
    //6. 事务提交
    transaction.commit();
    
    //7. 释放资源
    session.close();
    sessionFactory.close();
    }
}

啦啦啦
结束
没想到这么简单


未完待续

???


为什么还没结束?
因为我特喵的想链接远程数据库来着
数据库在服务器上,我想把用户密码啥的传上去验证啥的
然后
老师告诉我处于安全方面考虑
数据库不允许被这样玩
会玩坏的
要在对应的数据库里允许远程链接
而且还要借助navicat的ssh传送数据
所以现在正在搞这个
搞完了过来更新!