orm.xml은 Java Persistence API(JPA)에서 사용하는 XML 구성 파일로, JPA 엔티티 매핑을 정의하거나 JPA 관련 설정을 지정하는 데 사용됩니다. 이 파일은 주로 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 설정하는 데 사용되며, 애플리케이션이 실행될 때 JPA가 이 파일을 참조하여 엔티티와 데이터베이스 간의 관계를 이해하고 처리합니다.
- 엔티티 매핑 정의:
orm.xml 파일에서 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 정의할 수 있습니다. 이는 엔티티 클래스의 어노테이션을 사용하지 않고도 매핑을 설정할 수 있는 방법입니다.
예를 들어, 엔티티의 필드와 테이블의 컬럼 간의 매핑을 XML로 정의할 수 있습니다.
- JPA 설정:
엔티티와 관련된 설정을 중앙에서 관리할 수 있습니다. 예를 들어, 엔티티의 이름, 필드 매핑, 기본 키, 테이블 매핑 등을 설정할 수 있습니다.
애플리케이션 내에서 여러 엔티티 클래스에 대해 통일된 설정을 제공하거나, 특정 환경에 따라 설정을 변경할 때 유용합니다.
- 어노테이션 대체:
Java 클래스에서 어노테이션을 사용하지 않고도 orm.xml을 통해 설정을 외부화할 수 있습니다. 이 방법은 소스 코드를 수정하지 않고도 설정을 변경할 수 있는 유연성을 제공합니다.
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
version="2.0">
<named-query name="Todo.findBySearchTermNamedOrmXml">
<query>SELECT t FROM Todo t WHERE LOWER(t.title) LIKE LOWER(CONCAT('%', :searchTerm, '%')) OR LOWER(t.description) LIKE LOWER(CONCAT('%', :searchTerm, '%')) ORDER BY t.title ASC</query>
</named-query>
<named-native-query name="Todo.findBySearchTermNamedNativeOrmXml"
result-class="net.petrikainulainen.springdata.jpa.todo.Todo">
<query>SELECT * FROM todos t WHERE LOWER(t.title) LIKE LOWER(CONCAT('%',:searchTerm, '%')) OR LOWER(t.description) LIKE LOWER(CONCAT('%',:searchTerm, '%')) ORDER BY t.title ASC</query>
</named-native-query>
</entity-mappings>
//복붙하세염