2014-10-23 6 views
2

먼저 프로그래밍 학교 atm에서 Im을 말하고 프로젝트 개발이라는 과정에서 노인층의 프로젝트를 계속 받았다. 그래서 불필요하게 프로젝트를 마음으로 알지 못하고 내 경험과 짝을 지어서, 어쩌면 어리석은 질문을 용서할 수 있기를 바랍니다.응용 프로그램을 시작할 때마다 DB 내용이 삭제됨

Maven 웹 응용 프로그램입니다. 사용되는 언어는 Java입니다. 데이터베이스는 simpe JAVA DB (Derby)이고, 서버는 Glassfish 4.0입니다. 둘 다 Netbeans 8.0 환경에서 사용됩니다.

실제 문제가 생겼습니다. 응용 프로그램은 질문지, 답변, 그림 등을 업로드 할 수 있도록 온라인 설문지 작성 도구입니다. 그리고 그것은 작동합니다. 모든 것이 DB에 저장되고 지속됩니다. 나는 수동으로 점검하고 데이터는 거기에 남아 있습니다. 응용 프로그램을 닫습니다. 그러나 앱을 다시 실행하자마자 모든 DB 콘텐츠가 손실됩니다. 아직 완전히 공개되지는 않았지만, 사진을 다시 업로드하면 마지막 세션을 업로드 한 이전 ID (동일한 ID)가 표시되므로 ID 만 삭제되는 것 같습니다.

Ofc, 내 첫 번째 생각은 persistence.xml이었고 테이블 생성 전략을 "none"으로 설정했습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" 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_1.xsd"> 
    <persistence-unit name="OnlineTestCreatorPU" transaction-type="JTA"> 
    <jta-data-source>jdbc/online_test_creator_db</jta-data-source> 
    <properties> 
    </properties> 
    </persistence-unit> 
</persistence> 

이 didnt한다 내가 글래스 피쉬 - ressources.xml에 가서 "= 만들 true"로 속성을 제거하므로 다음, 두 문제를 해결 : 은 여기 내의 persistence.xml (는 EclipseLink (JPA 2.1))입니다. 이것은 어느 쪽도 그것을 해결하지 않았다.

때때로 친구가 새 설정으로 올바르게 다시 작성하지 못하고 제대로 정리해야한다고 들었습니다. 그래서 나는 10 번을 성공적으로 청소하고 모든 것을 다시 만들고 시도했지만 여전히 결과가 없다. 또한 DB 이름이 내 persistence.xml 및 glassfish-ressources.xml의 항목과 일치하는지 확인했습니다. 나는 나의 (오히려 제한된) 지식의 끝에 정직하게있다.

그렇다면 응용 프로그램을 시작할 때마다 내 DB 콘텐츠가 모두 사라질 수 있습니다.

누락 된 정보가 더 필요하면 알려주세요. 최선을 다해이를 증명하려고 노력할 것입니다.

답변

1

당신이 확인할 수 있습니다 여러 가지가 있습니다 : 나는대로 1

그러나 즉시 응용 프로그램을 다시 시작, 모든 DB의 내용이 손실됩니다. 그래도 은 완전히 공개되지는 않았지만 사진을 다시 업로드 할 때 이전 세션 (예 : )이 업로드 된 이전 ID (동일한 ID)가 표시되므로 ID 만 삭제 된 것으로 보입니다.

시작한 후에 어떤 콘텐츠가 실제로 데이터베이스에 있는지 확인해야합니다. 사진은 브라우저에서 캐시 할 수 있습니다. 이를 확인하려면 데이터베이스 만 시작하고 내용을 검사해야합니다. NetBeans와 함께 제공되는 Derby DB를 사용하는 경우 NetBeans Services 탭에서 수행 할 수 있습니다. 모든 데이터베이스 내용이 메모리에 completly 저장되고 데이터베이스를 다시 시작하면 분실이 모드에서 어쩌면 더비가 inmemory 모드로 구성되어 2.

. persistence-unit에 대해 설정된 JDBC URL을 확인해야합니다.URL이 이와 비슷한 경우

jdbc:derby://myhost:1527/memory:myDB;create=true 

데이터베이스는 in-memory-mode로 구성됩니다. 특정 Derby 연결 풀의 Additional Properties 탭에있는 GlassFish admin GUI를 통해 설정을 확인할 수 있습니다.

3.

은 삭제하거나 이전 데이터베이스 항목을 덮어 응용 프로그램에서 몇 가지 논리가있을 수 있습니다. SQL 문 로깅을 활성화하여이를 쉽게 디버그 할 수 있습니다. 에 persistence.xml 다음을 추가

<property name="eclipselink.logging.level" value="ALL"/> 
<property name="eclipselink.logging.parameters" value="true"/> 

당신의 위는 EclipseLink 2.4.0을 사용하는 경우가 :

<property name="eclipselink.logging.level.sql" value="ALL"/> 
<property name="eclipselink.logging.parameters" value="true"/> 

이 응용 프로그램에서 오는 모든 SQL 문을 표시합니다.

+1

유익한 답변을 보내 주셔서 감사합니다. 실제 솔루션은 더 단순하고 힘들었습니다. 분명히 밤을두고 컴퓨터를 종료 한 다음 다시 시도해보십시오. 지금은 테이블 생성 전략이 "없음"으로 설정되어 있습니다. 내 유일한 추측은 RAM에있을 수있는 persistence.xml의 오래된 버전을 사용하고 있었고, 어쨌든 Netbeans를 다시 시작하고 청소를 피할 수있었습니다. 그러나 귀하의 답변은 여전히 ​​유익했으며 특히 Point 3은 앞으로 큰 도움이 될 것입니다. 고마워. – 404KnowledgeNotFound

+0

당신은 환영합니다 :) – unwichtich