Je suis en train de créer un jar runnable d'une application Java. J'utilise Hibernate et Spring. Mon projet est un projet Maven avec la structure suivante:Comment faire pour distribuer l'application java avec SQLite
src
-----/main
----------/java
---------------/com
--------------------/project
-------------------------/main.java
----------/resources
---------------/database.db
pom.xml
Ceci est une partie de mon fichier POM
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.15.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
J'utilise hiberner pour communiquer avec une base de données SQLite pour effectuer lecture et d'écriture opérations . La configuration .xml pour mise en veille prolongée:
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<beans:property name="driverClassName" value="org.sqlite.JDBC" />
<beans:property name="url"
value="jdbc:sqlite:src/main/resources/database.db" />
</beans:bean>
Je voudrais être en mesure de distribuer l'application avec la base de données pour l'utilisateur à utiliser. J'ai lu que sqlite est une base de données intégrée. Cependant, j'ai également trouvé sur google mentions qu'il est lu seulement quand vous le mettez dans un .jar. Comment puis-je distribuer la base de données avec l'application de manière sécurisée? (sécurisé signifie qu'il ne peut pas être écrasé, ouvert ou lu facilement).
le moment où vous expédiez la base de données au consommateur, il n'est plus sécurisé. Il est trivial d'extraire la base de données de jar (un jar est juste un zip), puis l'ouvrir dans un gestionnaire sqllite. Tout programme avec les bonnes autorisations pourrait le faire facilement. – Tschallacka
@Tschallacka Je ne demande pas une sécurité complète et complète. Je veux juste être sûr que la base de données n'est pas facilement accessible et ne peut pas être écrasée facilement. – user3552551
est-il une base de données en lecture seule statique? Si c'est le cas, appliquez un test de somme de contrôle avant d'effectuer l'interface. Effectuez une exception critique si elle est modifiée. – Tschallacka