Java持久化框架是Java程序开发中非常常用的工具之一,可以帮助我们方便地进行数据持久化操作。下面我将为大家详细讲解“如何使用Java持久化框架?”,过程中包含如下内容:
- Java持久化框架的概念和作用;
- Java持久化框架的使用步骤;
- 两个具体的使用示例。
一、Java持久化框架的概念和作用
Java持久化框架(Java Persistence Framework,简称JPA)是一组管理数据持久化的API和实现,它为我们提供了在Java应用中操作数据库的一系列工具,能够降低我们的代码复杂度,提高开发效率,既能进行单表的ORM映射,也能进行复杂查询。
二、Java持久化框架的使用步骤
Java持久化框架的使用步骤主要包括如下内容:
- 添加依赖:在项目的pom.xml文件中添加持久化框架的依赖,常用的包括Hibernate、MyBatis等。
- 配置文件:通过修改配置文件,配置数据库连接、数据源、JPA的实现等信息。
- 实体类:通过编写实体类定义数据库中的表、列、属性以及表之间的关系。
- 操作数据库:通过调用JPA提供的API,实现对数据库的增删改查等常规操作。
下面我们以两个具体实例来说明Java持久化框架的使用。
三、两个具体的使用示例
示例1:使用Hibernate实现数据表的操作
- 在pom.xml文件中添加如下依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.3.Final</version>
</dependency>
- 在application-context.xml配置文件中配置数据源和JPA的实现:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.example.entity"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="persistenceUnitName" value="default"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
- 编写实体类:
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private Integer age;
//省略getter和setter
}
- 实现对数据库表(person)的增删改查操作:
@Service
@Transactional
public class PersonServiceImpl implements PersonService {
@PersistenceContext
private EntityManager entityManager;
@Override
public Person save(Person person) {
entityManager.persist(person);
return person;
}
@Override
public void delete(Long id) {
entityManager.remove(entityManager.find(Person.class, id));
}
@Override
public Person update(Person person) {
entityManager.merge(person);
return person;
}
@Override
public List<Person> findAll() {
return entityManager.createQuery("select p from Person p").getResultList();
}
@Override
public Person findById(Long id) {
return entityManager.find(Person.class, id);
}
}
示例2:使用MyBatis实现数据表的操作
- 在pom.xml文件中添加如下依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
- 在application-context.xml配置文件中配置数据源和MyBatis的实现:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.example.entity"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
- 编写实体类和Mapper文件。
3.1 Person实体类:
public class Person {
private Long id;
private String name;
private Integer age;
//省略getter和setter
}
3.2 PersonMapper.xml文件:
<mapper namespace="com.example.mapper.PersonMapper">
<resultMap id="personResultMap" type="com.example.entity.Person">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
</resultMap>
<select id="findAll" resultMap="personResultMap">
SELECT * FROM PERSON
</select>
<select id="findById" resultMap="personResultMap">
SELECT * FROM PERSON WHERE id = #{id}
</select>
<insert id="save" parameterType="com.example.entity.Person">
INSERT INTO PERSON (name,age) VALUES (#{name}, #{age})
</insert>
<update id="update" parameterType="com.example.entity.Person">
UPDATE PERSON SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="delete" parameterType="java.lang.Long">
DELETE FROM PERSON WHERE id = #{id}
</delete>
</mapper>
3.3 PersonMapper.java文件:
public interface PersonMapper {
List<Person> findAll();
Person findById(Long id);
void save(Person person);
void update(Person person);
void delete(Long id);
}
- 实现对数据库表(person)的增删改查操作:
@Service
@Transactional
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonMapper personMapper;
@Override
public Person save(Person person) {
personMapper.save(person);
return person;
}
@Override
public void delete(Long id) {
personMapper.delete(id);
}
@Override
public Person update(Person person) {
personMapper.update(person);
return person;
}
@Override
public List<Person> findAll() {
return personMapper.findAll();
}
@Override
public Person findById(Long id) {
return personMapper.findById(id);
}
}
以上就是使用Java持久化框架的详细攻略,希望大家能够理解并学习掌握。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Java持久化框架? - Python技术站