/**
* 批量生成 Hibernate Dao
* @author WangZhen Email: thinkgem@gmail.com
*/
package com.yuchen.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class BatchBuildDao {
String filePath = "D:\\test\\src\\java\\com\\yuchen\\test\\common\\";
String packageName = "com.yuchen.test.common";
public BatchBuildDao() {
List<String> classNameList = new ArrayList<String>();
classNameList = this.getClassNameList(this.filePath + "model\\");
String content = "";
for (String className : classNameList) {
content = "package " + this.packageName + ".dao;\n\n"
+ "import " + this.packageName + ".model." + className + ";\n\n"
+ "public interface " + className + "Dao" + " extends HibernateDao<" + className + "> {\n\n"
+ "}\n";
this.createFile(filePath + "dao\\" + className + "Dao.java", content);
content = "package " + this.packageName + ".dao.impl;\n\n"
+ "import " + this.packageName + ".dao." + className + "Dao;\n"
+ "import " + this.packageName + ".model." + className + ";\n\n"
+ "public class " + className + "DaoImpl extends HibernateDaoSupport<" + className + "> implements " + className + "Dao {\n\n"
+ "}";
this.createFile(filePath + "dao\\impl\\" + className + "DaoImpl.java", content);
content = "<bean id=\"" + className.substring(0, 1).toLowerCase() + className.substring(1) + "Dao\" class=\"" + this.packageName + ".dao.impl." + className + "DaoImpl\">\n"
+ " <property name=\"sessionFactory\"><ref bean=\"sessionFactory\" /></property>\n"
+ "</bean>\n";
System.out.print(content);
}
}
public List<String> getClassNameList(String path) {
List<String> list = new ArrayList<String>();
File file = new File(path);
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
String fileName = files[i].getName();
if (".java".equals(fileName
.substring(fileName.lastIndexOf(".")))) {
list.add(fileName.substring(0, fileName.lastIndexOf(".")));
}
}
}
return list;
}
public void createFile(String fileName, String content) {
try {
FileWriter fw = new FileWriter(fileName);
fw.write(content);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new BatchBuildDao();
}
}
分享到:
相关推荐
此外,了解SQL语言也是必要的,虽然Hibernate可以自动生成SQL,但在某些复杂查询场景下,可能需要手动编写SQL。最后,熟悉Spring框架和其他与Hibernate整合的技术,如Spring Data JPA,能够进一步提升开发效率。
生成Hibernate POJO类,Dao类,Service类,Action类。 生成保存,删除,修改,批量保存,批量修改,批量删除,按条件查询,分页查询等功能。 生成各大主流框架配置文件及JSP页面。 一键生成整个项目,加入Jar包部署...
生成hibernate pojo类,dao类,service类,action类。 生成保存,删除,修改,批量保存,批量修改,批量删除,按条件查询,分页查询等功能。 生成各大主流框架配置文件及jsp页面。 一键生成整个项目,加入...
Hibernate处理1-N关系时保存技巧、Hibernate缓存机制、Hibernate批量处理数据、Hibernate三种继承映射策略、hibernate映射体系、Hibernate主键生成策略、持久层DAO设计建议、基于xml文件的bean、使用HibernateAPI在...
此外,为了更高效地自动化这些过程,你可以编写便捷脚本来批量生成代码。这可能涉及到编写Maven或者Gradle插件,或者使用IDEA的Live Templates和Action。在压缩包中的"便捷脚本"可能包含了这样的自动化脚本,使用时...
当今许多Web应用程序选择使用ORM(Object-Relational Mapping)框架,如Hibernate和MyBatis,它们简化了DAO的实现。ORM框架自动处理SQL生成和结果映射,让开发者更专注于业务逻辑。 8. **安全性**: DAO模式也有...
- **代码生成:** 插件可以自动生成实体类、DAO层以及Service层代码,加速开发进程。 **4. 数据持久化流程:** 1. 创建实体类并定义属性,通过注解或XML文件映射到数据库表。 2. 初始化SessionFactory,它是线程...
此外,了解Hibernate生成的SQL语句,结合数据库优化,能够进一步提升系统性能。 八、Hibernate与其他技术的集成 Hibernate可与其他Java框架如Spring、MyBatis等无缝集成。在Spring框架中,可以通过SessionFactory...
- **生成Bean和配置文件**:使用工具如DAOTool自动生成与数据库表对应的Java Bean类和配置文件。 - **创建DAOFactory**:根据配置文件创建DAOFactory实例,用于获取DAO对象。 - **创建DAO**:通过DAOFactory创建...
5. **DAO层设计**:创建Hibernate的Data Access Object(DAO)接口和实现类,这里包含对数据库的CRUD操作方法,比如使用Session对象执行SQL语句。 6. **Service层设计**:创建Service接口和实现类,将业务逻辑封装...
本示例通过一个通用的DAO(Data Access Object)类,展示了如何在不依赖Hibernate等ORM框架的情况下,进行数据库的增删改查操作。这有助于理解底层的SQL执行过程,同时也提供了更灵活的控制权。 首先,DAO模式是一...
第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不...
1. `src`目录:存放Java源代码,包括Struts的Action类、Hibernate的实体类和DAO(Data Access Object)层代码。 2. `WEB-INF`目录:包含web.xml(Web应用的部署描述符)和struts-config.xml(Struts配置文件),以及...
代码自动生成是指通过自动化工具,依据预先定义好的规则或模式,批量生成符合特定需求的源代码。这通常涉及到元数据、设计模型或配置文件,这些信息被用来驱动代码生成过程。在Java领域,这种技术被广泛应用,例如在...
- 主键生成策略:Hibernate提供了多种主键生成策略,如identity, sequence, table等。 综上所述,Hibernate教程涵盖了从基本概念到实战应用的全面知识,无论你是初学者还是有经验的开发者,都能从中获益,提高在...
2. 映射(Mapping):实体类与数据库表之间的关系通过Hibernate的映射文件(hbm.xml)或者Java注解来定义,这包括字段与列的对应、主键生成策略等。 3. 会话(Session):它是Hibernate的主要工作单元,用于在持久...
具体到Hibernate场景下,可能是DAO实例、SessionFactory实例或其他依赖注入的对象未正确初始化。 **原因分析**: 这种错误的根本原因在于Spring容器未能成功创建或配置所需的bean。例如,`SessionFactory`可能因...
例如,Session在保存对象时,会先将其放入一级缓存(内存),当事务提交时,再批量写入数据库,提高性能。同时,Hibernate还提供了二级缓存,允许跨会话共享数据。 六、最佳实践 1. 使用SessionFactory的...
2. 批量操作:利用Hibernate的批处理功能,提高插入、更新和删除的效率。 3.延迟加载(Lazy Loading):只在真正需要时加载关联对象,避免数据冗余,节省内存。 六、最佳实践 1. 分离业务逻辑和数据访问:通过DAO...
- **批量操作**:正确配置batch_size参数,利用Hibernate的批量更新/删除功能,减少数据库交互次数。 - **JDBC调优**:合理使用JDBC连接,如调整预加载记录数等参数,以适应不同的应用负载。 #### 结论 Hibernate...