------------------1----------------
package com.kedou.bean;
public class StudentTest {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Student s=new Student();
s.setId(12);
s.setName("zhangyuan");
s.setAge(23);
Session session=new Session();
session.save(s);
}
}
-----------------2-----------------
package com.kedou.bean;
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
-----------------3------------------
package com.kedou.bean;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.HashMap;
import java.util.Map;
public class Session {
String tableName = "_Student";
Map<String, String> cfs = new HashMap<String, String>();
String[] methodNames;
public Session() {
cfs.put("_id", "id");
cfs.put("_name", "name");
cfs.put("_age", "age");
methodNames = new String[cfs.size()];
}
public void save(Student s) throws Exception {
String sql = createSQL();
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost/hibernate", "root", "zhangyuan");
PreparedStatement ps = conn.prepareStatement(sql);
for(int i=0;i<methodNames.length;i++){
Method m=s.getClass().getMethod(methodNames[i]);
Class r=m.getReturnType();
System.out.println(m.getName()+"|"+r.getName());
if(r.getName().equals("java.lang.String")){
String returnValue=(String) m.invoke(s);
ps.setString(i+1, returnValue);
}
if(r.getName().equals("int")){
Integer returnValue=(Integer)m.invoke(s);
ps.setInt(i+1, returnValue);
}
}
System.out.println(sql);
ps.executeUpdate();
ps.close();
conn.close();
}
private String createSQL() {
String str1 = "";
String str2 = "";
int index = 0;
for (String s : cfs.keySet()) {
String v = cfs.get(s);
v = Character.toUpperCase(v.charAt(0)) + v.substring(1);
methodNames[index] = "get" + v;
str1 += s + ",";
index++;
}
str1 = str1.substring(0, str1.length() - 1);
for (int i = 0; i < cfs.size(); i++) {
str2 += "?,";
}
str2 = str2.substring(0, str2.length() - 1);
System.out.println(str1);
String sql="insert into " + tableName + "(" +str1 + ")" + "values ("
+ str2 +")";
return sql;
}
}
分享到:
相关推荐
本项目通过Java的反射和注解技术,试图模拟Hibernate的部分功能,以便更好地理解和掌握ORM的核心原理。 1. **Java反射**: 反射是Java提供的一种强大的动态类型特性,允许程序在运行时获取类的信息(如类名、属性、...
在标题"控制反转应用,模拟Hibernate"中,我们讨论的是如何使用Java编程来模拟Hibernate中的IoC概念。Hibernate是一个流行的对象关系映射(ORM)框架,它在处理数据库操作时,利用IoC来管理对象的生命周期和依赖关系...
JDBC模拟hibernate,能过反射把数据重新装载进实体类
在本文中,我们将深入探讨通过模拟Hibernate源代码来理解其工作原理和核心功能。 首先,Hibernate的核心思想是将Java对象与数据库表进行映射,这样开发者可以使用面向对象的方式来处理数据库操作,而无需编写繁琐的...
本教程将通过模拟Hibernate的实现原理,帮助开发者深入理解其工作方式,以便更好地运用到实际项目中。 **一、Hibernate概述** Hibernate是一个开源的ORM框架,它提供了一种在Java应用中持久化对象到关系数据库的...
在这个"模拟hibernate的session.save()功能"的资源中,我们将深入理解Hibernate的核心操作之一:持久化对象。此程序源码的目的是帮助我们理解如何在没有Hibernate库的情况下实现类似的功能,这有助于我们更好地掌握...
在提供的"模拟hibernate中一级缓存"的案例中,我们可以创建一个简单的实体类,例如`User`,并使用Hibernate的Session接口进行操作。首先,通过`Session.get()`方法加载一个User对象,然后关闭Session。接着,再次...
在这个名为“模拟hibernate注解功能”的项目中,我们将探讨如何利用自定义注解和反射技术来模仿Hibernate的注解功能。 首先,让我们理解一下Hibernate的注解。Hibernate支持JPA(Java Persistence API)标准,其中...
本话题聚焦于如何模拟Hibernate的功能,自动生成Java Bean文件,这在开发过程中可以极大地提高效率,尤其是在处理大量数据库表结构时。以下是关于这个主题的详细知识: 1. **Hibernate简介**: Hibernate是一个...
**Hibernate 模拟实现** 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本项目旨在通过模拟实现,帮助开发者深入理解Hibernate的工作原理,以及如何在实际项目中...
在这个示例中,我们将通过纯Java代码来模拟Hibernate的一级缓存机制。 首先,我们来看一下一级缓存的作用。一级缓存的主要目的是减少对数据库的访问,提高应用程序的性能。当我们在Hibernate中查询一个对象时,如果...
第10课 模拟Hibernate原理(OR模拟) 13 一、 项目名称 13 二、 原代码 13 第11课 Hibernate基础配置 15 一、 提纲 15 二、 介绍MYSQL的图形化客户端 16 三、 Hibernate.cfg.xml:hbm2ddl.auto 16 四、 搭建日志环境并...
【hibernate与Session详解】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。通过Hibernate,我们可以将数据库中的表与Java类进行映射,从而实现对...
在模拟 Hibernate 的过程中,可以分为几个步骤:构造SQL语句,通过JDBC获取Connection,设置SQL参数,执行SQL并检查结果。 **Hibernate 基本配置** 1. `hbm2ddl.auto`属性控制数据库表的生命周期。validate只验证...
**第10课:模拟Hibernate原理(OR模拟)** ORM(Object-Relational Mapping)是Hibernate的核心,它允许开发者用面向对象的方式处理数据库。在这一课中,我们将学习如何通过Hibernate实现对象关系映射。主要知识点...
然后,我们模拟Hibernate的Session接口,这是操作数据库的主要入口。Session提供了保存、删除、更新和查询对象的方法。例如: ```java SessionFactory sessionFactory = Configuration().configure()....
4. **事务管理**:模拟Hibernate的事务处理,确保数据操作的原子性和一致性。 5. **缓存机制**:为了提高性能,可能会实现一个简单的缓存层,存放最近访问过的对象或查询结果。 通过这样的实践,学习者可以深入理解...
#### 模拟Hibernate原理(OR模拟) - **项目名称**:模拟项目的名称,用于实践理解Hibernate的工作原理。 - **原代码**:这部分通常包含了实现简单对象关系映射功能的基础代码,帮助理解Hibernate如何实现对象与...
读者可以通过查看这些源代码,了解作者如何模拟 Hibernate 的核心功能,如 Session 接口、实体管理、SQL 查询的自动化生成等。 综上所述,这篇文章的内容可能包括以下几个方面: 1. **数据库连接管理**:介绍如何...