`
FansUnion
  • 浏览: 166426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HibernateCRUD基础框架(1)-实体类

 
阅读更多

HibernateCRUD基础框架包括3篇文章,主要讲述整个CRUD基础框架的思路。

第1篇:讲述最基本的实体类,这些实体类是对SQL语言中的一些概念的封装。

第2篇:在这些实体类的基础上,开发一个“HQL语句构造器-HqlQueryBuilder”。

第3篇:构建一套简单的和较为复杂的标准的CRUD API。


优点:提高代码复用,提升编码效率。

缺点:没有过多考虑性能,具体性能没有去检验。

功能有限,只是针对常用的和较为简单的CRUD功能。


友情提示:注释已经写得比较清楚了,不再过多解释。

有问题,可以留言,抽空答复。


第1篇:实体类

1.常量和基础定义

package cn.fansunion.hibernate.sql;

/**
 * SQL关键字常量“and,like,where”,比较符常量">,<,="等常量。
 *
 * @author LeiWen@FansUnion.cn
 */
public class ConstantBase {

    /**
     * SQL关键字or
     */
    public static final String OR = "or";
    /**
     * SQL关键字and
     */
    public static final String AND = "and";
    /**
     * SQL关键字from
     */
    public static final String FROM = "from";
    /**
     * SQL关键字as
     */
    public static final String AS = "as";
    /**
     * SQL关键字where
     */
    public static final String WHERE = "where";
    /**
     * SQL关键字asc
     */
    public static final String ASC = "asc";
    /**
     * SQL关键字desc
     */
    public static final String DESC = "desc";
    /**
     * SQL关键字in
     */
    public static final String IN = "in";
    /**
     * not in
     */
    public static final String NOT_IN = "not in";
    /**
     * SQL关键字like
     */
    public static final String LIKE = "like";
    /**
     * not like
     */
    public static final String NOT_LIKE = "not like";
    /**
     * order by
     */
    public static final String ORDER_BY = "order by";
    /**
     * group by
     */
    public static final String GROUP_BY = "group by";
    /**
     * SQL关键字limit
     */
    public static final String LIMIT = "limit";
    /**
     * 冒号
     */
    public static final String COLON = ":";
    /**
     * 逗号
     */
    public static final String COMMA = ",";
    /**
     * 一个空格
     */
    public static final String BLANK = " ";
    /**
     * 一个空字符串
     */
    public static final String EMPTY = "";
    /**
     *
     */
    public static final boolean AUTO_ADD = true;
    /**
     * 右括号
     */
    public static final String RIGHT_BRACKET = ")";
    /**
     * 左括号
     */
    public static final String LEFT_BRACKET = "(";
    /**
     * 百分号
     */
    public static final String PERCENT = "%";
    /**
     * 单引号
     */
    public static final String SINGLE_QUOTATION_MARK = "'";
    /**
     * 等号
     */
    public static final String EQUALS = "=";
    /**
     * 不等
     */
    public static final String NOT_EQUALS = "!=";
    /**
     * 大于号
     */
    public static final String GREAT_THAN = ">";
    /**
     * 小于号
     */
    public static final String LESS_THAN = "<";
    /**
     * 大于等于
     */
    public static final String GREAT_THAN_EQUALS = ">=";
    /**
     * 小于等于
     */
    public static final String LESS_THAN_EQUALS = "<=";

    // *************************************
    // **********左右分别加1个空格的常量*****************
    // *************************************
    public static final String EQUALS_WITH_BLANK = buildBlank(EQUALS);
    public static final String NOT_EQUALS_WITH_BLANK = buildBlank(NOT_EQUALS);

    public static final String GREAT_THAN_WITH_BLANK = buildBlank(GREAT_THAN);
    public static final String LESS_THAN_WITH_BLANK = buildBlank(LESS_THAN);

    public static final String GREAT_THAN_EQUALS_WITH_BLANK = buildBlank(GREAT_THAN_EQUALS);
    public static final String LESS_THAN_EQUALS_WITH_BLANK = buildBlank(LESS_THAN_EQUALS);

    public static final String IN_WITH_BLANK = buildBlank(IN);
    public static final String NOT_IN_WITH_BLANK = buildBlank(NOT_IN);

    public static final String LIKE_WITH_BLANK = buildBlank(LIKE);
    public static final String NOT_LIKE_WITH_BLANK = buildBlank(NOT_LIKE);

    public static final String ORDER_BY_WITH_BLANK = buildBlank(ORDER_BY);
    public static final String GROUP_BY_WITH_BLANK = buildBlank(GROUP_BY);

    public static final String LIMIT_WITH_BLANK = buildBlank(LIMIT);
    public static final String WHERE_WITH_BLANK = buildBlank(WHERE);
    public static final String AS_WITH_BLANK = buildBlank(AS);

    /**
     * 返回变量对应的字符串值
     *
     * @param or
     * @return true返回“or”,false返回"and"
     */
    public static String isOr(Boolean or) {
        String str = AND;
        if (or) {
            str = OR;
        }
        return str;
    }

    /**
     * 在字符串的左边加上百分号"%",在字符串的右边加上百分号"%"
     *
     * @param str
     *            字符串
     * @return 被"%%"包围起来的新的字符串
     */
    public static String buildLike(Object str) {
        String newStr = PERCENT + str + PERCENT;
        return newStr;
    }

    /**
     * 在一个字符串的左边和右边都加上一个空格
     *
     * @param str
     * @return 新的字符串
     */
    public static String buildBlank(Object str) {
        String newStr = BLANK + str + BLANK;
        return newStr;
    }

    /**
     * 在字符串的左边和右边加上单引号"'"
     *
     * @param str
     *            字符串
     * @return 被"''"包围起来的新的字符串
     */
    public static String buildQuota(Object str) {
        String newStr = SINGLE_QUOTATION_MARK + str + SINGLE_QUOTATION_MARK;
        return newStr;
    }

    /**
     * 在字符串的左边加上左括号"(",在字符串的右边加上右括号")"
     *
     * @param str
     *            字符串
     * @return 被"()"包围起来的新的字符串
     */
    public static String buildBracket(Object str) {
        String newStr = LEFT_BRACKET + str + RIGHT_BRACKET;
        return newStr;
    }

    public static void println(Object object) {
        System.out.println(object);
    }

    public static void print(Object object) {
        System.out.print(object);
    }
}

package cn.fansunion.hibernate.sql;

/**
 * 操作符的类型,如"= != > >= < <="。
 *
 * @author LeiWen@FansUnion.cn
 */
public enum Operator {

    EQUALS, NOT_EQUALS, GREAT_THAN, GREAT_THAN_EQUALS, LESS_THAN, LESS_THAN_EQUALS, LIKE, NOT_LIKE, IN, NOT_IN;
    /**
     * 转化为字符串(TODO 放在一个单独的工具类里比较合适)
     */
    public static String toString(Operator operator) {
        String str = "";

        switch (operator) {
        case EQUALS:
            str = ConstantBase.EQUALS;
            break;

        case NOT_EQUALS:
            str = ConstantBase.NOT_EQUALS;
            break;

        case GREAT_THAN:
            str = ConstantBase.GREAT_THAN;
            break;

        case GREAT_THAN_EQUALS:
            str = ConstantBase.GREAT_THAN_EQUALS;
            break;

        case LESS_THAN:
            str = ConstantBase.LESS_THAN;
            break;

        case LESS_THAN_EQUALS:
            str = ConstantBase.LESS_THAN_EQUALS;
            break;

        case LIKE:
            str = ConstantBase.LIKE;
            break;

        case NOT_LIKE:
            str = ConstantBase.NOT_LIKE;
            break;

        case IN:
            str = ConstantBase.IN;
            break;

        case NOT_IN:
            str = ConstantBase.NOT_IN;
            break;

        default:
            break;
        }
        return str;
    }
}


public enum AndOr {
    AND, OR
}

2.实体类


package cn.fansunion.hibernate.sql.entity;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.text.StrBuilder;

import cn.fansunion.hibernate.sql.ConstantBase;

/**
 * From语句,如"from User user"。
 *
 * @author LeiWen@FansUnion.cn
 */
public class From extends ConstantBase {
    /**
     * 实体类的class,如User.class
     */
    private Class<?> modelClazz;
    /**
     * 实体类Class的字符串表示,如User
     */
    private String model;
    /**
     * 别名,如user
     */
    private String alias;

    public From() {
        super();
    }

    public From(Class<?> modelClazz) {
        super();
        this.modelClazz = modelClazz;
    }

    public From(Class<?> modelClazz, String alias) {
        super();
        this.modelClazz = modelClazz;
        this.alias = alias;
    }

    public From(String model) {
        super();
        this.model = model;
    }

    public From(String model, String alias) {
        super();
        this.model = model;
        this.alias = alias;
    }

    //
    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public Class<?> getModelClazz() {
        return modelClazz;
    }

    public void setModelClazz(Class<?> modelClazz) {
        this.modelClazz = modelClazz;
    }

    public String getAlias() {
        return alias;
    }

    public void setAlias(String alias) {
        this.alias = alias;
    }
    /**
     * 转化为字符串
     */
    public String toString() {
        if (modelClazz != null) {
            this.model = modelClazz.getSimpleName();
        }

        StrBuilder builder = new StrBuilder();
        if (StringUtils.isNotEmpty(model)) {
            builder.append(FROM).append(BLANK)
                    .append(modelClazz.getSimpleName());
            if (StringUtils.isNotEmpty(alias)) {
                builder.append(AS_WITH_BLANK).append(alias);
            }
        }

        return builder.toString();
    }

}


package cn.fansunion.hibernate.sql.entity;

import java.util.Date;

import cn.fansunion.hibernate.sql.ConstantBase;
import cn.fansunion.hibernate.sql.Operator;

/**
 * 1个查询条件。由3部分构成,键-操作-值,如 "age > 12 ","email ='LeiWen@FansUnion.cn'"等。
 *
 * @author LeiWen@FansUnion.cn
 */
public class Condition extends ConstantBase {
    /**
     * 条件的键
     */
    private String key;
    /**
     * 条件的操作符
     */
    private Operator operator;
    /**
     * 条件的值
     */
    private Object value;

    public Condition() {

    }

    public Condition(String key, Operator operator) {
        super();
        this.key = key;
        this.operator = operator;
    }

    public Condition(String key, Object value) {
        this.key = key;
        this.value = value;
    }

    public Condition(String key, Operator operator, Object value) {
        this.key = key;
        this.operator = operator;
        this.value = value;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public Operator getOperator() {
        return operator;
    }

    public void setOperator(Operator operator) {
        this.operator = operator;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    /**
     * 转化为字符串
     */
    public String toString() {
        String str = "";

        String newValue = "";
        // 构造完整的语句
        if (value != null) {
            // 是否需要自动增加"%%","()"
            if (AUTO_ADD) {
                switch (operator) {
                case LIKE:

                case NOT_LIKE:
                    newValue = buildLike(value);
                    break;

                case IN:
                case NOT_IN:
                    newValue = buildBracket(value);
                    break;

                default:
                    break;
                }

                // 需要添加引号的类型
                boolean isString = value instanceof String;
                boolean isDate = value instanceof Date;
                boolean isSqlDate = value instanceof java.sql.Date;
                if (isString || isDate || isSqlDate) {
                    newValue = buildQuota(value);
                } else {
                    newValue = value.toString();
                }

            }
        }
        // 构造带有占位符的语句
        else {
            newValue = COLON + key;
        }
        // "name=a","name like a",统一都加个空格
        str += key + BLANK + Operator.toString(operator) + BLANK + newValue;
        return str;
    }
}


package cn.fansunion.hibernate.sql.entity;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.text.StrBuilder;

import cn.fansunion.hibernate.AndOr;
import cn.fansunion.hibernate.sql.ConstantBase;
import cn.fansunion.hibernate.util.EmptyUtils;

/**
 * 逻辑上属于1个组的条件。
 *
 * @author LeiWen@FansUnion.cn
 */
public class GroupCondition extends ConstantBase {
    /**
     * 多个条件构成的集合
     */
    private List<Condition> conditionList;

    /**
     * 组内各个条件之间的关系:且|或,默认为且
     */
    private List<Boolean> relationList;

    public static final Boolean AND = true;
    public static final Boolean OR = false;

    public GroupCondition() {
        conditionList = new ArrayList<Condition>();
        relationList = new ArrayList<Boolean>();
    }

    public void addCondition(Condition condition) {
        addCondition(condition, true);
    }

    public void addCondition(Condition condition, boolean or) {
        conditionList.add(condition);
        if (EmptyUtils.notEmpty(conditionList)) {
            relationList.add(or);
        }
    }

    public void addCondition(Condition condition, AndOr ao) {
        conditionList.add(condition);
        if (EmptyUtils.notEmpty(conditionList)) {
            if (ao == AndOr.AND) {
                relationList.add(AND);
            } else {
                relationList.add(OR);
            }
        }
    }

    public void addOr(int index, boolean or) {
        relationList.set(index, or);
    }

    /**
     * 转化为字符串
     */
    public String toString() {
        if (EmptyUtils.isEmpty(conditionList)) {
            return EMPTY;
        }

        StrBuilder builder = new StrBuilder();
        int size = conditionList.size();
        for (int index = 0; index < size; index++) {
            if (index == 0) {
                builder.append(conditionList.get(index));
            } else {
                builder.append(BLANK).append(isOr(relationList.get(index)))
                        .append(BLANK).append(conditionList.get(index));
            }
        }
        return builder.toString();
    }

}

package cn.fansunion.hibernate.sql.entity;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.text.StrBuilder;

import cn.fansunion.hibernate.sql.ConstantBase;
import cn.fansunion.hibernate.util.EmptyUtils;

/**
 * 搜索条件(2个组之间,且|或。)
 *
 * @author LeiWen@FansUnion.cn
 */
public class SearchCondition extends ConstantBase {

    /**
     * 多个组条件构成的集合
     */
    private List<GroupCondition> groupConditionList;

    /**
     * 多个组条件之间的关系:且|或,默认为且
     */
    private List<Boolean> and;

    public SearchCondition() {
        groupConditionList = new ArrayList<GroupCondition>();
        and = new ArrayList<Boolean>();

    }

    public void addGroupCondition(GroupCondition groupCondition) {
        addGroupCondition(groupCondition, false);
    }

    public void addGroupCondition(GroupCondition groupCondition, boolean or) {
        groupConditionList.add(groupCondition);
        if (EmptyUtils.notEmpty(groupConditionList)) {
            and.add(or);
        }
    }

    public void addOr(int index, boolean or) {
        and.set(index, or);
    }

    public List<GroupCondition> getGroupConditionList() {
        return groupConditionList;
    }

    public void setGroupConditionList(List<GroupCondition> groupConditionList) {
        this.groupConditionList = groupConditionList;
    }

    public List<Boolean> getAnd() {
        return and;
    }

    public void setAnd(List<Boolean> and) {
        this.and = and;
    }

    /**
     * 转化为字符串
     */
    public String toString() {
        if (EmptyUtils.isEmpty(groupConditionList)) {
            return EMPTY;
        }

        StrBuilder builder = new StrBuilder();

        int size = groupConditionList.size();
        for (int index = 0; index < size; index++) {
            // 1个组的条件用()包起来
            if (index == 0) {
                builder.append(WHERE_WITH_BLANK).append(
                        buildBracket(groupConditionList.get(index)));

            } else {
                builder.append(BLANK).append(isOr(and.get(index)))
                        .append(BLANK)
                        .append(buildBracket(groupConditionList.get(index)));
            }
        }

        return builder.toString();
    }
}

package cn.fansunion.hibernate.sql.entity;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.text.StrBuilder;

import cn.fansunion.hibernate.sql.ConstantBase;

/**
 *
 * 排序语句,如“order by id desc”。
 *
 * @author LeiWen@FansUnion.cn
 */
public class Order extends ConstantBase {
    /**
     * 排序语句的键
     */
    private String key;
    /**
     * 排序语句的升序或降序(字符串形式)
     */
    private String asc;
    /**
     * 排序语句的升序或降序(布尔形式)
     */
    private Boolean isAsc;

    public Order() {

    }

    public Order(String key, String asc) {
        this.key = key;
        this.asc = asc;
    }

    public Order(String key, Boolean isAsc) {
        super();
        this.key = key;
        this.isAsc = isAsc;
    }

    /**
     * 转化为字符串
     */
    public String toString() {
        String finalSort = DESC;

        if (StringUtils.isNotEmpty(asc)) {
            finalSort = asc;
        } else {
            if (isAsc) {
                finalSort = ASC;
            }
        }

        StrBuilder builder = new StrBuilder();
        builder.append(key).append(BLANK).append(finalSort);
        return builder.toString();
    }

}

package cn.fansunion.hibernate.sql.entity;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.text.StrBuilder;

import cn.fansunion.hibernate.sql.ConstantBase;
import cn.fansunion.hibernate.util.ListUtils;

/**
 * 排序组,如"order by id desc,name asc"。
 *
 * @author LeiWen@FansUnion.cn
 */
public class OrderGroup extends ConstantBase {
    /**
     * 多个排序构成的集合
     */
    private List<Order> orderList;

    public OrderGroup() {
        orderList = new ArrayList<Order>();
    }

    public OrderGroup(Order order) {
        this();
        orderList.add(order);
    }

    public OrderGroup(Order order1, Order order2) {
        this();
        orderList.add(order1);
        orderList.add(order2);
    }

    public void addOrder(Order order) {
        orderList.add(order);
    }
    /**
     * 转化为字符串
     */
    public String toString() {
        StrBuilder builder = new StrBuilder();
        if (ListUtils.notEmpty(orderList)) {
            String orders = ListUtils.list2String(orderList);
            builder.append(ORDER_BY_WITH_BLANK).append(orders);
        }
        return builder.toString();
    }

}

package cn.fansunion.hibernate.sql.entity;

import java.util.ArrayList;
import java.util.List;

import cn.fansunion.hibernate.sql.ConstantBase;
import cn.fansunion.hibernate.util.EmptyUtils;
import cn.fansunion.hibernate.util.ListUtils;

/**
 * 分组语句,如"group by id,name"。
 *
 * @author LeiWen@FansUnion.cn
 */
public class GroupBy extends ConstantBase {

    /**
     * 分组的字段名称构成的集合,暂时不支持having子句
     */
    private List<String> group;

    public GroupBy() {
        group = new ArrayList<String>();
    }

    public List<String> getGroup() {
        return group;
    }

    /**
     * 转化为字符串
     */
    public String toString() {
        if (EmptyUtils.notEmpty(group)) {
            String groupStr = ListUtils.list2String(group);
            return GROUP_BY_WITH_BLANK + groupStr;
        }
        return EMPTY;
    }

    public void addGroup(String g) {
        this.group.add(g);
    }
}

原文链接http://blog.fansunion.cn/articles/3616(小雷博客-blog.fansunion.cn)

分享到:
评论

相关推荐

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    - **实体类**: 使用@Entity注解标记Java类为JPA实体,并通过@Id注解指定主键字段。 - **持久化操作**: 通过EntityManager的persist()方法将新实体持久化,merge()方法更新已存在的实体,remove()方法删除实体,find...

    Struts_Spring_Hibernate_CRUD操作案例_-分页查询

    - **实体类**:代表数据库表,通过注解或XML映射文件与数据库表建立关联。 - **Session接口**:执行数据库操作的主要接口,包括CRUD操作和查询。 - **HQL/JPQL**:Hibernate查询语言,类似SQL,用于对象级别的...

    hibernate-cglib-repack-2.1_3.jar.zip

    在Hibernate中,CGLIB被用于动态生成持久化类的代理对象,当我们的实体类没有实现任何接口时,Hibernate就会选择使用CGLIB来生成代理,以便实现透明化的懒加载和级联操作。 在“hibernate-cglib-repack-2.1_3.jar”...

    S2SH-CRUD整合框架

    SSH2 CRUD框架是基于Spring、Struts2和Hibernate三个开源组件构建的,主要用于简化Web应用中的数据操作,即增(Create)、删(Delete)、改(Update)和查(Read)功能。这个框架组合为开发者提供了高效、灵活和可...

    hibernate-3.3.2.GA-jar包集合

    - 在Hibernate 3.x版本中,实体类和数据库表之间的映射可以通过XML文件进行定义,描述了对象和表的对应关系,如字段类型、长度、约束等。 5. **注解驱动的映射**: - 从Hibernate 3.2版本开始,除了使用XML文件...

    hibernate-distribution-3.5.6-Final.rar

    1. 改进的注解支持:此版本进一步加强了对Java Persistence API (JPA) 注解的支持,使得开发者可以通过在实体类上添加注解,轻松地定义对象-关系映射。 2. Criteria API的增强:提供了一种更加灵活的动态查询方式,...

    Strust2+Hibernate实现CRUD操作网页

    - **实体类(Entity)**:代表数据库表,用Java类表示,通过注解或者XML配置与数据库表建立映射关系。 - **Session接口**:是Hibernate的主要工作接口,负责对象的持久化操作,如保存、更新、删除和查询。 - **...

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    1. **实体类注解**: - `@Entity`:标记一个Java类为数据库中的一个实体表,相当于传统的Hibernate配置文件中的映射文件。 - `@Table`:用于指定实体类对应的数据库表名,可以设置其他如schema、catalog等属性。 ...

    Hibernate实战----创建RedSaga论坛

    5. **注解映射**:在实体类中使用Hibernate注解,如`@Entity`、`@Table`、`@Id`、`@GeneratedValue`等,将Java对象与数据库表进行映射。 6. **Session工厂与会话管理**:理解并实现SessionFactory的创建,以及如何...

    生成hibernate实体类

    5. **自定义实体类**:虽然工具可以自动创建基础的实体类,但通常还需要根据业务需求进行一些定制,比如添加注解、实现特定接口或覆盖默认行为。 6. **配置Hibernate**:在主配置文件(如`hibernate.cfg.xml`)中,...

    spring-boot-04-web-restfulcrud

    在项目中,我们需要定义与数据库表对应的实体类。这些类通常会包含`@Entity`注解以表明它们是JPA实体,`@Id`注解标识主键,以及`@GeneratedValue`注解自动生成主键值。 6. **Service层实现业务逻辑** 业务逻辑...

    hibernate-3.6.5.Final-dist.zip

    6. **tools**:Hibernate工具,如反向工程生成实体类、数据库表同步等。 ### 使用指南 1. **环境配置**:确保JDK和JDBC驱动已安装,将Hibernate相关jar添加到项目类路径。 2. **配置文件**:编写`hibernate.cfg.xml...

    hibernate-core-5.0.11.Final.jar

    1. **SessionFactory**:它是整个Hibernate的核心,负责实体类和数据库表之间的映射信息。SessionFactory是线程安全的,通常在应用启动时创建并全局共享。 2. **Session**:每个数据库操作都应在Session中进行,它...

    hibernate-jpa-2.1-api-1.0.0.draft-6-sources

    JPA通过定义实体类(Entity)和注解,将对象模型与关系数据模型进行映射,从而实现了ORM。 Hibernate JPA 2.1 API是Hibernate组织对JPA 2.1规范的具体实现,它为开发者提供了更强大、更灵活的持久化机制。1.0.0....

    hibernate-annotations-3.4.0.GA

    Hibernate Annotations是Hibernate 3.x系列引入的新特性,它允许开发者在Java实体类上直接使用注解来定义对象关系映射信息,替代了传统的Hibernate XML配置文件。这种注解方式提高了开发效率,减少了配置文件的维护...

    使用Hibernate开发租房系统1-3jar包

    本资源“使用Hibernate开发租房系统1-3jar包”显然提供了使用Hibernate进行租房系统开发所需的基础库文件。下面我们将详细探讨Hibernate的相关知识点及其在租房系统开发中的应用。 1. **Hibernate简介**:Hibernate...

    Hibernate-CRUD自用基础模板

    - `实体类`:如`User.java`,代表数据库中的表,通常使用JavaBean模式,通过注解或XML映射到数据库表。 - `SessionFactory`和`Session`的初始化:在应用启动时,会根据`hibernate.cfg.xml`创建`SessionFactory`,并...

    hibernate框架基础教程适合新手

    3. **实体类与映射文件** Hibernate通过XML映射文件(例如`User.hbm.xml`)将Java类(如`User`)与数据库表进行关联。映射文件定义了字段与列的对应,以及主键、外键等关系。 4. **Session与Transaction** `...

    hibernate-3.6.10.Final-souce

    3. **tools**:提供Hibernate的工具类,如反向工程、Hbm2DDL等,用于生成数据库表结构或实体类。 4. **annotations**:包含了Hibernate的注解处理器和API,支持注解驱动的实体定义。 5. **examples**:提供了示例...

    传智播客-hibernate框架开发视频第day01-day04资料

    - 实体类和注解:创建实体类并使用Hibernate注解进行字段映射。 - Session工厂与Session:理解Session工厂的概念,以及Session在数据操作中的角色。 2. **Day02:持久化操作** - CRUD操作:掌握如何通过...

Global site tag (gtag.js) - Google Analytics