我有一个spring应用程序,它必须连接到sql server数据库。没有@Entity类,也没有@Repository,因为应用程序不知道表和表的列。我已经创建了一个类,并使用实体管理器来执行查询,但我不确定在这种情况下这是否是最佳选择:
@Service
public class MyRepo {
private final EntityManager entityManager;
public MyRepo(@Qualifier("myEntityManagerFactory") EntityManager _entityManager){
entityManager = _entityManager;
}
public void execQuery(){
String queryStr = "select TOP (10) * from [MyTable]";
Query query = entityManager.createNativeQuery(queryStr);
List<Object> queryRes = query.getResultList();
}
}
我的问题是,在我的场景中,创建一个";经典的";连接到数据库而不是创建实体管理器(因为没有实体(
类似于:
Connection con=DriverManager.getConnection("connection string","user","password");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select TOP (10) * from [MyTable]");
非常感谢你的建议。
您滥用JPA只是为了保持连接。
你应该选择JdbcTemplate
。
不要使用Spring Data JPA的启动器,而是使用spring-boot-starter-jdbc
(不是SpringDataJDBC(。注入一个JdbcTemplate
或NamedParameterJdbcTemplate
,并使用它们来执行SQL代码。