Hibernate는 이름에서 알 수 있듯이 핵심 아이디어는 객체를 통해 데이터베이스의 정보를 조작할 수 있는 ORM(Object Relational Mapping)입니다. 개발자는 데이터베이스 SQL 문에 익숙하지 않다고 합니다. 이는 개발자가 데이터베이스를 작동하기 위해 SQL 문에 익숙할 필요가 없으며 자동으로 SQL 문을 생성하고 실행할 수 있습니다.
hibernate를 사용하면 개발자가 객체 지향적 사고를 완벽하게 사용하여 데이터베이스를 운영할 수 있으므로 다음 데모에는 SQL 문이 있는 경우 말하지 않은 것처럼 처리해 주세요!
이 기사에서는 최대 절전 모드를 사용하여 개인 데이터 테이블에 대한 간단한 기본 추가, 삭제, 수정 및 쿼리 작업을 구현합니다.
Environment: win7+eclipse
Toolkit: 다운로드할 수 있는 hibernate 패키지, 버전 4가 사용됩니다.
데이터베이스 연결 드라이버 패키지, 이 예에서는 mysql이 사용됩니다. 프로그램 구조 다이어그램
pojo 레이어 엔터티 클래스
package demo.pojo; public class Person {private Integer id;private String name;private String gender;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + "]";}}
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 以下四行分别为:数据库驱动类、Drivermanager获取连接的参数URL、用户名、密码 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1/web?characterEcoding=utf-8</property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <!-- 设置方言,hibernate会根据数据库的类型相应生成SQL语句 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 控制台显示生成的sql语句,默认为false --> <property name="show_sql">true</property> <!-- 映射配置源文件的位置 --> <mapping resource="demo/pojo/Person.hbm.xml"/> </session-factory> </hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- name是实体类全名,table为数据表名 --> <class name="demo.pojo.Person" table="Person"> <id name="id" column="id"> <!-- 主键生成方式,native是让hibernate自动识别 --> <generator class="native"></generator> </id> <!--
0.name 값은 속성 이름입니다. 엔터티 클래스에서 열은 데이터 테이블의 필드 이름입니다.
1. 엔터티 클래스의 속성 이름이 해당 데이터 테이블 필드 이름과 동일한 경우 다음 열을 생략할 수 있으며 최대 절전 모드는 자동으로 일치합니다. 예를 들어 age 아래;
2. 반대로 엔터티 클래스의 속성 이름이 해당 데이터 테이블 필드 이름과 다른 경우 아래에 성별, 성별 등 두 항목을 모두 작성해야 합니다.
<property name="name" column="name"></property> <property name="gender" column="sex"></property> <property name="age"></property> </class> </hibernate-mapping>
package demo.util; import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder; public class HibernateSessionFactory {private static SessionFactory factory;private static ThreadLocal<Session> thread = new ThreadLocal<Session>();private static String path = "hibernate.cfg.xml";private static Configuration config = new Configuration();static {config.configure(path);ServiceRegistry service = new ServiceRegistryBuilder()//定义一个服务注册机.applySettings(config.getProperties()).buildServiceRegistry();factory = config.buildSessionFactory(service);//创建Session工厂类}/** * 从hibernate的session工厂类里创建一个session * @return * */public static Session getSession() {Session session = thread.get();if(session == null || !session.isOpen()) {session = factory.openSession();thread.set(session);}return session;}public static void closeSession() {Session session = thread.get();if(session != null && session.isOpen()) {session.close();thread.set(null);}}}
위 내용은 최대 절전 모드를 사용하여 개인 데이터 테이블에 대한 작업 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!