hibernate配置

在这里插入图片描述

pom:

 <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
            <!-- 添加Hibernate依赖 -->
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.4.32.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.32.Final</version>
        </dependency>


        <!-- mysql数据库的驱动包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.16</version>
            </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>

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>
        <!--数据源配置-->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/game?useAffectedRows=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false&amp;serverTimezone=UTC</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="connection.pool_size">10</property>

        <!--打印SQL语句-->
        <property name="show_sql">true</property>
        <!--格式化SQL语句-->
        <property name="format_sql">true</property>
        <!--是否自动生成数据表,如果表存在则直接使用,否则县创建
        默认none    不自动生成
        update    如果没有表会创建,有会检查更新
        create    创建
        -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--数据库方言,方便根据不同方言自动生成SQL语句-->
        <property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>


<!--        指定哪些pojo或entity 需要进行ORM映射-->
        <mapping class="com.jpa.entity.User"></mapping>

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

user类

package com.jpa.entity;

import lombok.Data;

import javax.persistence.*;
import java.util.Date;

@Entity                 //作为hibernate实体类
@Table(name = "t_user") //映射的表名
@Data
public class User {

    /*
    * @Id:声明主键的配置
    * @GeneratedValue:
    *GenerationType.TABLE:使用一个特定的数据库表格来保存主键。
        GenerationType.SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
        GenerationType.IDENTITY:主键由数据库自动生成(主要是自动增长型)
        GenerationType.AUTO:主键由程序控制。
    *
    * @Column:指定实体类属性和数据库表之间的对应关系
    * 	name:指定数据库表的列名称。
        unique:是否唯一
        nullable:是否可以为空
        nserttable:是否可以插入
        updateable:是否可以更新
        columnDefinition: 定义建表时创建此列的DDL
    *
    * */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;

    private String username;

    private String password;

    private Long role;

    private String roleName;

    private String createUser;

    private String updateUser;

    private Date createTime;

    private Date updateTime;

}

test测试:

package com.jpa;

import com.jpa.entity.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

public class JpaTests {

//  session工厂  Session:数据库会话  代码持久化操作数据库的一个桥梁
    private SessionFactory sf;

    @Before
    public void init(){

        StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("/hibernate.cfg.xml").build();
//        根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的session工厂
        System.out.println(registry);
        try {
            sf = new MetadataSources(registry).buildMetadata().buildSessionFactory();
        } catch (Exception e) {
            e.printStackTrace();
            // 错误则打印输出,并销毁
            StandardServiceRegistryBuilder.destroy(registry);
        }

    }

    @Test
    public void testset(){

//        session进行持久化操作
        try(Session session = sf.openSession()){

            Transaction transaction = session.beginTransaction();
            User user = new User();
            user.setPassword("123456")
                .setUsername("jpa")
                .setRole(1l)
                .setRoleName("jpa");

            session.save(user);
            transaction.commit();

        }


    }

    @Test
    public void test_remove(){

//        session进行持久化操作
        try(Session session = sf.openSession()){

            Transaction transaction = session.beginTransaction();
            User user = new User();
            user.setId(3l);

//            session.update(user);
            session.remove(user);
            transaction.commit();

        }


    }

    @Test
    public void test_updae(){

//        session进行持久化操作
        try(Session session = sf.openSession()){

            Transaction transaction = session.beginTransaction();
            User user = new User();
            user.setPassword("123456")
                    .setUsername("jpa")
                    .setRole(1l)
                    .setRoleName("JPA1")
                    .setId(5l);

            session.update(user);
//            session.saveOrUpdate(user);
            transaction.commit();

        }


    }


    @Test
    public void testget(){

//        session进行持久化操作
        try(Session session = sf.openSession()){

            Transaction transaction = session.beginTransaction();
            User user = new User();

            User user1 = session.find(User.class,2l);
            System.out.println(user1);
            transaction.commit();

        }


    }

    @Test
    public void test_lazy(){

//        session进行持久化操作
        try(Session session = sf.openSession()){

            Transaction transaction = session.beginTransaction();
            User user = new User();

            User user1 = session.load(User.class,2l);//load:懒加载
            System.out.println("=========");
            System.out.println(user1);
            transaction.commit();

        }


    }

    @Test
    public void test_hql(){

//        session进行持久化操作
        try(Session session = sf.openSession()){

            Transaction transaction = session.beginTransaction();
            String hql = "FROM User";
            List<User> userList = session.createQuery(hql,User.class).getResultList();
            System.out.println(userList);
            transaction.commit();

        }

    }

    @Test
    public void test_hql02(){

//        session进行持久化操作
        try(Session session = sf.openSession()){

            Transaction transaction = session.beginTransaction();
            String hql = "FROM User where id =:id";
            List<User> userList = session.createQuery(hql,User.class)
                    .setParameter("id",1l)
                    .getResultList();
            System.out.println(userList);
            transaction.commit();

        }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值