mvn archetype:generate -DgroupId=com.example -DartifactId=my-library -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false <dependencies> <!-- OSGi dependencies --> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.core</artifactId> <version>7.0.0</version> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.service.component.annotations</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.service.component</artifactId> <version>1.4.0</version> </dependency> <!-- JPA dependencies --> <dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence-api</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa</artifactId> <version>2.7.7</version> </dependency> </dependencies> public interface MyService { void doSomething(); } @Component public class MyServiceImpl implements MyService { @Override public void doSomething() { } } <scr:component xmlns:scr="https://www.osgi.org/xmlns/scr/v1.3.0"> <implementation class="com.example.MyServiceImpl"/> <service> <provide interface="com.example.MyService"/> </service> </scr:component> @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; } public interface UserDao { User findById(Long id); void save(User user); void update(User user); void delete(User user); } @Component public class UserDaoImpl implements UserDao { @PersistenceContext private EntityManager entityManager; @Override public User findById(Long id) { return entityManager.find(User.class, id); } @Override public void save(User user) { entityManager.persist(user); } @Override public void update(User user) { entityManager.merge(user); } @Override public void delete(User user) { entityManager.remove(user); } } <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd" version="2.2"> <persistence-unit name="my-persistence-unit" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> </persistence-unit> </persistence> public class Main { public static void main(String[] args) { FrameworkFactory frameworkFactory = ServiceLoader.load(FrameworkFactory.class).iterator().next(); Map<String, String> config = new HashMap<>(); Framework framework = frameworkFactory.newFramework(config); framework.init(); framework.start(); ServiceReference<MyService> serviceReference = framework.getBundleContext().getServiceReference(MyService.class); MyService myService = framework.getBundleContext().getService(serviceReference); myService.doSomething(); EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("my-persistence-unit"); EntityManager entityManager = entityManagerFactory.createEntityManager(); UserDao userDao = new UserDaoImpl(); userDao.save(new User("John Doe")); User user = userDao.findById(1L); System.out.println(user.getName()); entityManager.close(); entityManagerFactory.close(); framework.stop(); framework.waitForStop(0); } }


上一篇:
下一篇:
切换中文