NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
К кавычке Эта Книга (Эффективный XML: 50 Особенных методов Улучшить Ваш XML):
“XML не является базой данных. Это никогда не предназначалось, чтобы быть базой данных. Это никогда не будет базой данных. Реляционные базы данных являются доказанной технологией больше чем с 20 годами опыта внедрения. Они - твердые, стабильные, полезные продукты. Они не уходят. XML является очень полезной технологией для движущихся данных между различными базами данных или между базами данных и другими программами. Однако это не самостоятельно база данных. Не используйте его как один. “
я думаю, что это подводит итог его, если немного прямо. XML является форматом обмена данными. Можно иметь XML парсинг библиотек, которые могут запросить DOM с выражениями XPath, но это не то же самое как DBMS. Можно создать DBMS с интерфейсом DOM/XPath, но получить свойства ACID или масштаб к большим наборам данных необходимо реализовать механизм DBMS и формат данных с индексами, входом и другими артефактами DBMS - который (по определению) делает его чем-то другим, чем XML.
Используйте XML для создания файлов, которые должны быть отправлены в другие приложения. XML больше подходит как формат обмена данными, чем как формат хранения данных.
следующая ссылка не плоха для описания при использовании XML: , Почему я должен использовать XML?
SQL является хорошими табличными данными - данные, которые легко вписываются в строки & столбцы. XML хорош для иерархических данных - данные, которые имеют несколько уровней различных размеров.
SQL хорош для устройства хранения данных & поиск. XML хорош для передачи & форматирование.
1), Когда необходимо обменяться данными с другими. XML" лингва франка " сети - примерно все могут считать и интерпретировать его, в отличие от файла базы данных.
2), Когда Ваш объем данных является небольшим и Вы не должны делать сложных запросов против него. XML-файлы хороши для вещей как хранение шаблонов конфигурации или шаблонов документов.
3), Когда у Вас нет многих писателей, пытающихся получить доступ к тем же данным. Базы данных SQL включили механизмы параллелизма, которые работают негласно на Вас. Базы данных SQL могут поддерживать индексы для извлечения информации о больших наборах данных быстро...
Вещи я использую XML для:
нет большого количества перекрытия между теми вариантами использования и вариантами использования для базы данных. Некоторые, но не очень.
Как ни странно, то, где я делаю свое интенсивное использование XML в данный момент, находится в настольном приложении, которое создает ADO DataSet в оперативной памяти и использует методы WriteXml и ReadXml DataSet, чтобы сохранить и получить его. Я использую ADO, потому что это - все, легче динамично создавать модель данных, определенную метаинформацией с помощью ADO, чем это должно было бы реализовать мою собственную объектную модель для задачи.
, Таким образом, вот случай, что взгляды как я использую XML в качестве базы данных. Но я действительно нет. Я использую объектную модель, которая, оказывается, реализует большую подобную базе данных функциональность, и я использую XML в качестве его формата персистентности.
Каждый раз, когда у Вас нет роскоши наличия базы данных (думайте однопользовательские приложения), или нуждаются в очень легком формате устройства хранения данных.
Также как предыдущий упомянутый плакат, формат обмена.
И XML и RDMSs могут использоваться в качестве хранилищ данных, но каждая реализация имеет свои собственные преимущества и недостатки.
Используя XML, чтобы хранить данные для веб-приложения обычно не большая проблема, пока Вы не начинаете иметь дело с большими объемами данных, или Вы решаете, что хотите обнаружить другую информацию от своих данных (пример: анализ данных). Другими словами, хранение больших количеств XML-файлов для источника данных не очень масштабируемо, но оно облегчает перемещать данные. XML может также использоваться для сериализации сложных объектов в нереляционном формате, который мог избавить от необходимости ORM, если можно сериализировать/десериализовать объекты непосредственно от (базы данных) XML
RDMSs, обычно более масштабируемы, предлагают большую поддержку параллелизма и намного быстрее при работе с большими объемами данных. Реляционная модель облегчает шахте данных позже. Базы данных действительно страдают от объектно-реляционного несоответствия импеданса ( http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch ), который мог бы потребовать, чтобы Вы записали ужасный код или использовали сложный ORMs.
Я пошел бы, если бы я ограничил mysql базы данных по своему хосту, тогда я видел бы возможность для использования XML как хранилище данных.
Вот пример использования XML с SQL: Аутентифицируемое пользовательское чтение и данные записи к различным базам данных, не, все из которых являются тем же DBMS. Пользователи для Компании данные использования из локальной базы данных SQL Server. Пользователи для Компании B используют данные из удаленной базы данных Oracle. И так далее. Дюжина различных баз данных, каждый с немного отличающимися схемами для тех же основных данных.
у разработчика веб-сайта нет способности создать хранимые процедуры на удаленных базах данных. SQL должен быть отправлен непосредственно от веб-приложения до базы данных. Так как каждая база данных имеет немного отличающийся синтаксис SQL и схему, необходимо использовать различный SQL для каждой из этих 12 баз данных для той же операции (ВЫБОР, ВСТАВИТЬ, и т.д.).
Один из выбора для встраивания SQL-операторов в веб-приложении состоит в том, чтобы разместить их в XML-файлы. Каждый XML-файл содержит набор SQL-операторов для одной из дюжины баз данных. Код определяет, к какой базе данных получают доступ для зарегистрированного пользователя и получает соответствующий SQL от указанного XML-файла.
Так же, как с хранимыми процедурами, SQL в XML-файле может быть обновлен, не останавливаясь или перекомпилировав приложение.
Некоторые приложения используют XML-файлы для хранения конфигурации, я предпочитаю использовать SQLite, чтобы сделать так.
Я был бы никогда использование любой вид XML, чтобы хранить мои данные.
Мы используем преобразования XSLT в качестве уровня абстракции данных в нашем приложении SOA. Все объекты отправляют друг другу данные в XSLT, таким образом, существует только один язык, который они должны понять. За исключением коннектора базы данных, который должен быть в состоянии преобразовать данные в SQL для отправки его к DB.
Этот путь Вам не распределили генерацию строки SQL по огромному количеству объектов в Вашем приложении. Делает обслуживание намного легче.